2017-10-14 6 views
5

ノードアプリケーションを実行してES6モジュールを使用する場合は、フラグ--experimental-modulesを使用します。--experimental-modulesフラグを使用すると、ノード内の__dirnameの代わりになります

ただし、このフラグを使用すると、メタバリアブル__dirnameは使用できません。このモードと互換性がある__dirnameに格納されている同じ文字列を取得する別の方法はありますか?

+0

['__dirname'](https://esdiscuss.org/topic/nodejss-filename-dirname-in-es6-modules)がES6で動作するようにするには、次のような回避策があります。 – 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

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

./package.json

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

それは__dirnameとして私のWindows PC上で正しいパスを返します。

関連する問題