2017-10-14 4 views
5

J'utilise l'indicateur --experimental-modules lors de l'exécution de mon application de noeud afin d'utiliser les modules ES6.Alternative pour __ nom_dans le noeud lors de l'utilisation de l'indicateur --experimental-modules

Toutefois, lorsque j'utilise ce drapeau, la méta-variable __dirname n'est pas disponible. Existe-t-il un moyen alternatif pour obtenir la même chaîne qui est stockée dans __dirname qui est compatible avec ce mode?

+0

Voici un travail pour obtenir ['__dirname'] (https://esdiscuss.org/topic/nodejss-filename-dirname-in-es6-modules) fonctionnant sous ES6, jetez un oeil – kgangadhar

Répondre

9

On a proposé d'exposer ces variables par import.meta, mais pour l'instant, vous avez besoin d'une solution de contournement hacky que j'ai trouvé here:

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

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

J'ai aussi dans cette question, ma solution:

./src/app.mjs:

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

Voici des informations sur mon dossier organisation:

./index.mjs

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

./package.json

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

Il est de retour les chemins corrects sur mon PC Windows comme __dirname.