2017-10-14 90 views
5

爲了使用ES6模塊,我運行節點應用程序時使用標誌--experimental-modules使用--experimental-modules標誌時節點中__dirname的替代方法

但是,當我使用這個標誌變元__dirname不可用。有沒有其他方法可以獲得與此模式兼容的__dirname中存儲的相同字符串?

+0

這裏有一個解決ES6中[__dirname](https://esdiscuss.org/topic/nodejss-filename-dirname-in-es6-modules)的問題,看一看 – kgangadhar

回答

9

有許多關於通過import.meta暴露這些變量的建議,但現在,你需要一個哈克解決方法,我發現here

// expose.js 
module.exports = {__dirname}; 

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

我也有這個問題,我的解決方案:

./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