Sto provando a seguire un tutorial su NodeJs. Non credo di aver perso nulla, ma ogni volta che chiamo lo process.env.NODE_ENV
l'unico valore che ottengo non è definito. Secondo la mia ricerca il valore predefinito dovrebbe essere "sviluppo". Come viene impostato dinamicamente questo valore e dove viene impostato inizialmente?process.env.NODE_ENV non è definito
risposta
process.env è un riferimento al proprio ambiente, quindi è necessario impostare la variabile lì.
Per impostare un environment variable in Windows:
SET NODE_ENV=development
su OS X o Linux:
export NODE_ENV=development
Questo ha funzionato, solo sul mio OS X la parola "EXPORT" doveva essere in minuscolo. Grazie. – basheps
potresti aggiungere che se NODE_ENV non è impostato l'app si comporta come in modalità "sviluppo" – Rocco
Per Linux, vi ~/.bash_profile, quindi inserisci NODE_ENV = sviluppo e salva. – stonyau
È inoltre possibile impostare da codice, ad esempio:
process.env.NODE_ENV = 'test';
I FORTEMENTE scoraggia chiunque a cambiare l'identificatore dell'ambiente nella logica dell'applicazione. Non vuoi mai che l'applicazione improvvisamente pensi che sia qualcos'altro che non sia realmente. Questo dovrebbe essere sempre modificato a livello di sistema, come suggeriscono molte altre risposte. – Kafoso
Si potrebbe voler leggere circa 12 app di fattori: https://12factor.net/config. Questo codice sarebbe una violazione di ciò. Ci sono buoni motivi per mantenere la tua configurazione separata dal tuo codice. – jcollum
Interessanti le app di 12 fattori! Continuate così! – joaquindev
In Utilizzare UBUNTU:
$ export NODE_ENV = test
ha funzionato come un fascino, grazie! –
Per le persone che utilizzano * nix (Linux, OS X, ecc), non c'è ragione di farlo tramite un secondo comando di esportazione, è possibile concatenare come parte del comando invocando:
NODE_ENV=development node server.js
Più facile, no? :)
Molto buono a sapersi. – basheps
Un pacchetto come cross-env consentirà di funzionare anche su Windows. – walkerrandophsmith
Abbiamo riscontrato questo problema quando si lavora con il nodo su Windows.
Piuttosto che richiedere a chiunque tenti di eseguire l'app per impostare queste variabili, abbiamo fornito un fallback all'interno dell'applicazione.
var environment = process.env.NODE_ENV || 'development';
In un ambiente di produzione, lo definiremmo con i metodi usuali (SET/export).
suggerimenti
in package.json
:
"scripts": {
"start": "set NODE_ENV=dev && node app.js"
}
in app.js
:
console.log(process.env.NODE_ENV) // dev
console.log(process.env.NODE_ENV === 'dev') // false
console.log(process.env.NODE_ENV.length) // 4 (including a space at the end)
così, questo può meglio:
"start": "set NODE_ENV=dev&& node app.js"
o
console.log(process.env.NODE_ENV.trim() === 'dev') // true
- 1. Definizioni di TypeScript per process.env.NODE_ENV?
- 2. ko.mapping non è definito
- 3. req.headers.origin non è definito
- 4. ISODate non è definito
- 5. abstractmethod non è definito
- 6. Timedelta non è definito
- 7. ReactDom non è definito
- 8. Firebase non è definito?
- 9. richiedono non è definito
- 10. 'ansible_date_time' non è definito
- 11. servletcontext.addservlet non è definito
- 12. "document.formName" non è definito?
- 13. RegeneratorRuntime non è definito
- 14. Grunt non è definito
- 15. window.googleapis non è definito
- 16. getSupportFragmentManager() non è definito
- 17. "Modernizr non è definito"
- 18. ReferenceError: webpack non definito
- 19. TinyMCE non è definito Jquery
- 20. vista backbone - non è definito
- 21. comando non è definito eccezione
- 22. AngularJS $ scope.variable non è definito
- 23. Magento UploaderJsObject non è definito
- 24. ReferenceError: videojs non è definito
- 25. Pyspark StructType non è definito
- 26. UndefinedError: 'user' non è definito
- 27. $ non è definito in jsfiddle
- 28. ejs 'partial non è definito'
- 29. richiedono non è definito? node.js
- 30. ReferenceError: GM_xmlhttpRequest non è definito
per impostare NODE_ENV per le applicazioni Heroku è possibile utilizzare: 'Heroku config: impostare NODE_ENV = "produzione"' –
Anche se le risposte di seguito risolveranno il problema temporaneamente impostando la variabile d'ambiente, la più grande lezione qui dovrebbe essere che non si può mai sapere se una variabile d'ambiente sarà impostata ... Quindi scrivi il tuo codice di conseguenza e verifica se è impostato e, in caso affermativo, a cosa. Non fare supposizioni a riguardo. –