Jak ustawić zmienną środowiskową w node.js?


Odpowiedzi:


140

Możesz ustawić zmienne środowiskowe w process.env:

process.env['VARIABLE'] = 'value';

-LUB-

process.env.VARIABLE = 'value';

Węzeł powinien zadbać o specyfikę platformy.


4
Myślę, że nie musisz tego robić var process = require('process'), proces jest obecną globalną zmienną.
— alessioalex

85
Należy jednak pamiętać, że spowoduje to ustawienie zmiennej tylko w ramach procesu węzła i wszystkich wywoływanych przez niego procesów potomnych; na przykład nie pozostawi zmiennej ustawionej w powłoce po zakończeniu procesu węzła (zmiana środowiska procesu macierzystego jest bardzo zależna od systemu i nie zawsze jest nawet możliwa).
— ebohlman

2
ktoś ma opinię na temat zmiennej process.env.variable vs global.variable?
— Scott Silvi,

3
process.env.VARIABLEjest w porządku, jeśli nazwa zmiennej jest znaną stałą, podczas gdy process.env['VARIABLE']działa w każdym przypadku; pierwotne pytanie nie zawierało wystarczającej ilości szczegółów, więc bardziej wszechstronny przykład wydawał się bardziej odpowiedni.
— lanzz

3
@BillMorris nie, żaden proces nie może zmodyfikować środowiska swojego rodzica
— lanzz

3

Najpierw należy zainstalować ten pakiet: - https://github.com/motdotla/dotenv [ npm install dotenv]

Następnie musisz utworzyć plik .env w katalogu głównym projektu i tam możesz dodać zmienne, jak poniżej: -

NODE_ENV=PRODUCTION
DATABASE_HOST=localhost

Teraz możesz łatwo uzyskać dostęp do tych zmiennych w swoim kodzie, jak poniżej: -

require('dotenv').config()
console.log(process.env.NODE_ENV);

U mnie zadziałało, mam nadzieję, że to pomoże.


1
Jak bezpieczny jest plik .env używany przez dotenv? Jeśli sekrety są zwykłym tekstem w ciągach środowiskowych w pliku .env, czy jest to bezpieczniejsze niż umieszczenie ich jako zwykłego tekstu w kodzie węzła? Która z nich jest ewidentnie nie-nie?
— Ric

0

node v14.2.0 Aby ustawić zmienną env najpierw utwórz nazwę pliku config.env w katalogu domowym projektu, a następnie zapisz wszystkie potrzebne zmienne, na przykład

config.env

NODE_ENV=development
PORT=3000
DATABASE=mongodb+srv://lord:<PASSWORD>@cluster0-eeev8.mongodb.net/tour-guide?retryWrites=true&w=majority
DATABASE_LOCAL=mongodb://localhost:27017/tours-test
DATABASE_PASSWORD=UDJUKXJSSJPWMxw

teraz zainstaluj dotenv z npm, dotenv odciąży twoją pracę

npm i dotenv

teraz w skrypcie startowym serwera, w moim przypadku jest to server.js użyj doenv do załadowania zmiennych env.

const dotenv = require('dotenv');
dotenv.config({ path: './config.env' });
const app = require('./app'); // must be after loading env vars using dotenv

//starting server
const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`app running on port ${port}...`);
});

Używam express, całego mojego kodu ekspresowego w app.js, pisząc tutaj w celach informacyjnych

const express = require('express');
const tourRouter = require('./route/tourRouter');
const userRouter = require('./route/userRouter');

if (process.env.NODE_ENV === 'development') {
  console.log('mode development');
}
app.use(express.json());

app.use('/api/v1/tours', tourRouter);
app.use('/api/v1/users', userRouter);

module.exports = app;

teraz uruchom serwer za pomocą konsoli, ja używam nodemona , możesz go zainstalować z npm;

nodemon server.js
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.