使用–experimental-modules标志时,节点中__dirname的替代方法

为了使用ES6模块,我运行我的节点应用程序时使用了flag --experimental-modules modules。

但是当我使用这个标志时,元variables__dirname不可用。 有没有其他的方法来获取存储在__dirname与此模式兼容的相同的string?

有关于通过import.meta暴露这些variables的build议,但现在,你需要一个hacky解决方法,我在这里find:

 // expose.js module.exports = {__dirname}; // use.mjs import expose from './expose.js'; const {__dirname} = expose; 

我也解决了这个问题,我的解决办法是:

./src/app.mjs:

 app.set('views', path.join(path.resolve('./src'), 'views')); 

这是关于我的文件夹组织的信息:

./index.mjs

 import server from './src/bin/www.mjs'; server.start(); 

./package.json

 "scripts": { "start": "node --experimental-modules ./index.mjs" }, 

它是在我的Windows PC上返回正确的path为__dirname