NodeJS's __filename/__dirname in ES6 Modules

Gil Tayar gil at
Fri Jan 20 16:42:36 UTC 2017

While reading Dominic Denicola's spec for dynamic import() at, I read his rational for
not having import be a regular function, but rather a "syntactic form". The
idea is that import() needs to be "in the scope" of the current module, as
it needs to resolve the module path it is given relative to the current
Thinking about it some more, I thought it would be a pity for import to be
so "special", and asked myself whether there will be more features that
will need to be "module-aware" like import().

And there are! (I think...) - __filename and __dirname in NodeJS are
exactly such features. Actually, anything passed to the function wrapping
each NodeJS module is such a feature, but going over them, only __filename
and __dirname are not immediately related to the module mechanism.

So my question is this (and it is specifically addressed to the NodeJS
implementors in the group): in NodeJS's implementation of ES6 modules, how
will __dirname and __filename be implemented? Will there still be a
function wrapper like in the current module implementation? Or will
__dirname and __filename be a "syntactic form" like import()? Or something

Gil Tayar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list