2017-10-14 8 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')); 

여기 내 폴더에 대한 정보가 조직 :

./package.json

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

import server from './src/bin/www.mjs'; 
server.start(); 
그것은 __dirname로 내 윈도우 PC의 올바른 경로를 반환 것 ./index.mjs.