Я пытаюсь следовать руководству NodeJs. Я не думаю, что я пропустил что-либо, но всякий раз, когда я называю process.env.NODE_ENV
, единственным значением, которое я возвращаю, является undefined. Согласно моим исследованиям, значение по умолчанию должно быть "развитием". Как это значение динамически устанавливается и где оно установлено первоначально?
Process.env.NODE_ENV undefined
Ответ 1
process.env - ссылка на вашу среду, поэтому вам нужно установить там переменную.
Чтобы установить переменную среды в Windows:
SET NODE_ENV=development
в OS X или Linux:
export NODE_ENV=development
Ответ 2
Для пользователей, использующих * nix (Linux, OS X и т.д.), нет причин делать это с помощью второй команды экспорта, вы можете связать ее как часть команды вызова:
NODE_ENV=development node server.js
Легче, нет?:)
Ответ 3
советы
в package.json
:
"scripts": {
"start": "set NODE_ENV=dev && node app.js"
}
в 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)
так, это может быть лучше:
"start": "set NODE_ENV=dev&& node app.js"
или
console.log(process.env.NODE_ENV.trim() === 'dev') // true
Ответ 4
Мы столкнулись с этой проблемой при работе с node в Windows.
Вместо того, чтобы требовать от пользователя, который пытается запустить приложение для установки этих переменных, мы предоставили резервную копию в приложении.
var environment = process.env.NODE_ENV || 'development';
В производственной среде мы определяем его по обычным методам (SET/export).
Ответ 5
В UBUNTU используйте:
$export NODE_ENV = test
Ответ 6
В macOS для тех, кто использует экспресс-версию 4.xx
и использует плагин DOTENV
, необходимо использовать так:
-
После установки плагина импортируйте, как
require('dotenv').config({path: path.resolve(__dirname+'/.env')});
ниже, в файл, в котором выrequire('dotenv').config({path: path.resolve(__dirname+'/.env')});
приложение:require('dotenv').config({path: path.resolve(__dirname+'/.env')});
-
В корневом каталоге создайте файл ".env" и добавьте переменную, например:
NODE_ENV=development
илиNODE_ENV = development
Ответ 7
Вы можете использовать пакет cross-env npm. Он позаботится об обрезке переменной среды, а также убедится, что она работает на разных платформах.
В корне проекта запустите:
npm install cross-env
Затем в вашем package.json под скриптами добавьте:
"start": "cross-env NODE_ENV=dev node your-app-name.js"
Затем в своем терминале, в корне проекта, запустите ваше приложение, выполнив:
npm start
Затем переменная среды будет доступна в вашем приложении как process.env.NODE_ENV
, так что вы можете сделать что-то вроде:
if (process.env.NODE_ENV === 'dev') {
// Your dev-only logic goes here
}
Ответ 8
в файле package.json необходимо выполнить настройку, как показано ниже (работает в Linux и Mac OS)
важная вещь - "export NODE_ENV = production" после того, как ваши команды сборки приведены ниже:
"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",
}
-
для среды разработки нужно нажать команду "npm run dev"
-
для продакшен среды мы должны нажать команду "npm run start"
Ответ 9
Вы также можете установить его по коду, например:
process.env.NODE_ENV = 'test';
Ответ 10
const process = () => {
console.log('OMG!!! Why in HELL is this ${process.env.MYVAR}. ARGGGH!!!');
};