Ik probeer een tutorial over NodeJS te volgen. Ik denk niet dat ik iets heb gemist, maar wanneer ik de process.env.NODE_ENV
aanroep, is de enige waarde die ik terugkrijg undefined
. Volgens mijn onderzoek zou de standaardwaarde development
moeten zijn. Hoe wordt deze waarde dynamisch ingesteld en waar wordt deze aanvankelijk ingesteld?
Antwoord 1, autoriteit 100%
process.env is een verwijzing naar uw omgeving, dus u moet de variabele daar instellen.
Een omgevingsvariabele in Windows instellen:
SET NODE_ENV=development
op OS X of Linux:
export NODE_ENV=development
Antwoord 2, autoriteit 33%
tips
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)
dus dit kan beter:
"start": "set NODE_ENV=dev&& node app.js"
of
console.log(process.env.NODE_ENV.trim() === 'dev') // true
Antwoord 3, autoriteit 25%
Voor mensen die *nix gebruiken (Linux, OS X, etc.), is er geen reden om het via een tweede exportcommando te doen, je kunt het koppelen als onderdeel van het aanroepende commando:
NODE_ENV=development node server.js
Makkelijker, niet? 🙂
Antwoord 4, autoriteit 19%
We kwamen dit probleem tegen bij het werken met node op Windows.
In plaats van dat iedereen die de app probeert uit te voeren, deze variabelen moet instellen, hebben we een fallback in de app geboden.
var environment = process.env.NODE_ENV || 'development';
In een productieomgeving zouden we het definiëren volgens de gebruikelijke methoden (SET/export).
Antwoord 5, autoriteit 7%
U kunt het cross-envnpm-pakket gebruiken. Het zorgt voor het trimmen van de omgevingsvariabele en zorgt er ook voor dat het op verschillende platforms werkt.
Voer in de hoofdmap van het project uit:
npm install cross-env
Voeg vervolgens in uw package.json, onder scripts, toe:
"start": "cross-env NODE_ENV=dev node your-app-name.js"
Start vervolgens in uw terminal, in de projectroot, uw app door het volgende uit te voeren:
npm start
De omgevingsvariabele is dan beschikbaar in uw app als process.env.NODE_ENV
, dus u kunt zoiets doen als:
if (process.env.NODE_ENV === 'dev') {
// Your dev-only logic goes here
}
Antwoord 6, autoriteit 6%
In macOSvoor degenen die de express-versie 4.x.x
gebruiken en de plug-in dotenv
gebruiken, moeten ze als volgt gebruiken:
-
Na het installeren van de plug-in importeer je als volgt in het bestand waarin je de applicatie start:
require('dotenv').config({path: path.resolve(__dirname+'/.env')});
-
Maak in de hoofdmap een bestand ‘.env’ en voeg de variabele toe zoals:
NODE_ENV=development
of
NODE_ENV = development
Antwoord 7, autoriteit 5%
in package.json moeten we configureren zoals hieronder (werkt in Linux en Mac OS)
het belangrijkste is “export NODE_ENV=production” nadat je onderstaande build-commando’s een voorbeeld zijn:
"scripts": {
"start": "export NODE_ENV=production && npm run build && npm run start-server",
"dev": "export NODE_ENV=dev && npm run build && npm run start-server",
}
-
voor dev-omgeving moeten we op de opdracht “npm run dev” drukken
-
voor een productieomgeving moeten we op de opdracht “npm run start” drukken
Antwoord 8, autoriteit 3%
Gebruik in UBUNTU:
$ export NODE_ENV=test
Antwoord 9
Zo vroeg mogelijk in uw aanvraag dotenv vereisen en configureren.
require('dotenv').config()
Antwoord 10
Het komt door het besturingssysteem
Zorg ervoor dat u in uw package.json uw scripts hebt (waarbij app.js uw belangrijkste js-bestand is dat moet worden uitgevoerd & NODE_ENV wordt gedeclareerd in een .env-bestand). Bijvoorbeeld:
"scripts": {
"start": "node app.js",
"dev": "nodemon server.js",
"prod": "NODE_ENV=production & nodemon app.js"
}
Voor ramen
Stel ook uw .env-bestandsvariabele in met NODE_ENV=ontwikkeling
Als uw .env-bestand zich in een map voor de map eg.config bevindt, zorg er dan voor dat u dit opgeeft in app.js (uw hoofd js-bestand)
const dotenv = required(‘dotenv’);
dotenv.config({ pad: ‘./config/config.env’ });
Antwoord 11
Als je dit probleem in React tegenkwam, heb je [email protected] en hoger nodig. Ook om andere omgevingsvariabelen dan NODE_ENV
te laten werken in React, moeten ze worden voorafgegaan door REACT_APP_
.
Antwoord 12
Voor mij was het probleem dat ik de pkg-bibliotheekgebruikte om van mijn app een uitvoerbaar binair bestand. In dat geval werkten de geaccepteerde oplossingen niet. Het gebruik van de volgende code loste mijn probleem echter op:
const NODE_ENV = (<any>process).pkg ? 'production' : process.env.NODE_ENV;
Ik vond deze oplossing hierop GitHub.
Antwoord 13
In Electron Js
"scripts": {
"start": "NODE_ENV=development electron index.js",
},
Antwoord 14
Als u een functie definieert met de naam proces, kan dat ook dit probleem veroorzaken.
Antwoord 15
Je kunt het dotenv
pakket van npm gebruiken, hier is de link: https://www.npmjs.com/package/dotenv
Hiermee kunt u al uw configuraties in een .env
-bestand plaatsen
Antwoord 16
Je kunt het ook per code instellen, bijvoorbeeld:
process.env.NODE_ENV = 'test';