2017-05-07 4 views
0

Ich habe ein ziemlich Standard-Nodejs-Setup mit dotenv mit meiner server.js-Datei in einem src-Ordner sitzt, eine .env-Datei sitzt direkt daneben zusammen mit einer bin/www.js-Datei. Seit ich mit dotenv begonnen, alle folgenden nicht mehr funktionieren läuft ...NodeJs und Dotenv - Running nodemon findet keine .env-Datei im Ordner src

nodemon (from the root of my repo) 
npm start 
nodemon src/server 
nodemon src 
etc 

Alle scheitern und keine meiner Umgebungsvariablen erhalten ordnungsgemäß geladen. Ich muss zum tatsächlichen src-Ordner gehen und "nodemon server.js" an genau diesem Ort ausführen. Dies stellt einige Build-Umgebungen, die ich verwendet habe, und einige meiner früheren Cloud-Setups wie heroku vor Probleme. Ich dachte, die .env-Datei im selben Ordner wie meine server.js-Datei würde immer funktionieren, aber es nicht.

Kann mir jemand sagen, warum dotenv die .env-Datei nicht finden und die Umgebungsvariablen laden kann, abhängig davon, wo ich nodemon starte, obwohl nodemon die Datei server.js gerade findet?

Ich möchte im Prinzip in der Lage sein, nodemon aus dem Stammordner des Repositorys zu starten und dotenv arbeiten zu lassen. Außerdem habe ich versucht, den .env-Ordner in das Stammverzeichnis zu verschieben, und ich habe immer noch Probleme.

Antwort

0

Ich hatte das gleiche Problem, ich fand einen Weg, es zu beheben, aber es ist überhaupt nicht sauber.

Ich bemerkte, dass

node --require dotenv/config --require babel-register ./bin/www 

und

node ./bin/www --require dotenv/config --require babel-register 

die gleiche Art und Weise nicht verhält sich, wahrscheinlich, weil die --require für Knoten nicht für

./bin/www 

so habe ich am Ende mit

nodemon({ 
    script: '--require', 
    cwd: './dist', 
    tasks: [ 
    'dist', 
    ], 
    args: [ 
    'dotenv/config', 
    '--require', 
    'babel-register', 
    './bin/www', // YEAH it's weird but 
    ], 
    watch: [ 
    './src', 
    ], 
}); 

Ja, ich weiß, es ist hässlich, aber es funktioniert, wenn Sie eine bessere Möglichkeit haben, dies zu tun, lassen Sie es mich einfach :)