爲了使用ES6模塊,我運行節點應用程序時使用標誌--experimental-modules
。使用--experimental-modules標誌時節點中__dirname的替代方法
但是,當我使用這個標誌變元__dirname
不可用。有沒有其他方法可以獲得與此模式兼容的__dirname
中存儲的相同字符串?
爲了使用ES6模塊,我運行節點應用程序時使用標誌--experimental-modules
。使用--experimental-modules標誌時節點中__dirname的替代方法
但是,當我使用這個標誌變元__dirname
不可用。有沒有其他方法可以獲得與此模式兼容的__dirname
中存儲的相同字符串?
有許多關於通過import.meta
暴露這些變量的建議,但現在,你需要一個哈克解決方法,我發現here:
// 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的正確路徑,__dirname
。
這裏有一個解決ES6中[__dirname](https://esdiscuss.org/topic/nodejss-filename-dirname-in-es6-modules)的問題,看一看 – kgangadhar