2017-10-14 87 views
5

Używam flagi --experimental-modules podczas uruchamiania aplikacji mojego węzła w celu korzystania z modułów ES6.Alternatywa dla __dirname w węźle podczas używania flagi --experimental-modules

Jednak kiedy używam tej flagi metawariańska __dirname jest niedostępna. Czy istnieje alternatywny sposób uzyskania tego samego ciągu, który jest przechowywany w __dirname, który jest zgodny z tym trybem?

+0

Oto praca nad plikiem ['__dirname'] (https://esdiscuss.org/topic/nodejss-filename-dirname-in-es6-modules) pracującym w ES6, zobacz – kgangadhar

Odpowiedz

9

Były wnioski o wystawienie tych zmiennych przez import.meta, ale teraz trzeba hacky obejście, które znalazłem here:

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

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

I również w tej kwestii moje rozwiązanie:

./src/app.mjs:

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

Oto informacje o moim folderze organizacja:

./index.mjs

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

./package.json

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

To powrocie prawidłowych ścieżek na moim komputerze Windows jako __dirname.