Process.env.NODE_ENV undefined

Я пытаюсь следовать руководству NodeJs. Я не думаю, что я пропустил что-либо, но всякий раз, когда я называю 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, необходимо использовать так:

  1. После установки плагина импортируйте, как require('dotenv').config({path: path.resolve(__dirname+'/.env')}); ниже, в файл, в котором вы require('dotenv').config({path: path.resolve(__dirname+'/.env')}); приложение: require('dotenv').config({path: path.resolve(__dirname+'/.env')});

  2. В корневом каталоге создайте файл ".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!!!');
};