process.env.NODE_ENV未定义

时间:2012-06-19 15:13:19

标签: javascript node.js

我正在尝试关注NodeJs的教程。我不认为我错过了任何东西,但每当我调用process.env.NODE_ENV时,我得到的唯一值就是未定义。根据我的研究,默认值应该是“开发”。如何动态设置此值以及最初设置的位置?

16 个答案:

答案 0 :(得分:168)

process.env是对您的环境的引用,因此您必须在那里设置变量。

设置environment variable in Windows

SET NODE_ENV=development
OS X上的

Linux

export NODE_ENV=development

答案 1 :(得分:44)

对于使用* nix(Linux,OS X等)的人来说,没有理由通过第二个导出命令来执行此操作,您可以将其作为调用命令的一部分进行链接:

NODE_ENV=development node server.js

更容易,不是吗? :)

答案 2 :(得分:43)

<强>提示

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

答案 3 :(得分:24)

我们在Windows上使用节点时遇到了这个问题。

我们在应用程序中提供了一个回退,而不是要求任何试图运行应用程序的人设置这些变量。

var environment = process.env.NODE_ENV || 'development';

在生产环境中,我们将按照常规方法(SET / export)定义它。

答案 4 :(得分:6)

在UBUNTU中使用:

$ export NODE_ENV = test

答案 5 :(得分:6)

macOS 中,对于使用快速版本4.x.x并使用DOTENV插件的用户,需要使用以下代码:

  1. 在安装插件之后,在初始化应用程序的文件中,如下所示:     require('dotenv').config({path: path.resolve(__dirname+'/.env')});

  2. 在根目录中,创建文件'.env'并添加以下变量:

    NODE_ENV=development 要么 NODE_ENV = development

答案 6 :(得分:4)

您可以使用cross-env npm软件包。它将负责修剪环境变量,并确保它可在不同平台上运行。

在项目根目录中,运行:

ob_start();
include 'displaywebpage.php';
$body = ob_get_contents();
ob_end_clean();

然后在package.json中的脚本下添加:

npm install cross-env

然后在终端的项目根目录中,通过运行以下命令启动应用程序:

"start": "cross-env NODE_ENV=dev node your-app-name.js"

然后,环境变量将以npm start 的形式在您的应用中可用,因此您可以执行以下操作:

process.env.NODE_ENV

答案 7 :(得分:2)

在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”命令

答案 8 :(得分:1)

您也可以通过代码进行设置,例如:

process.env.NODE_ENV = 'test';

答案 9 :(得分:1)

这是由于操作系统

在package.json中,确保具有脚本(其中app.js是要执行的主要js文件,而NODE_ENV在.env文件中声明了)。例如:

"scripts": {
    "start": "node app.js",
    "dev": "nodemon server.js",
    "prod": "NODE_ENV=production & nodemon app.js"
  }

对于Windows

还设置具有NODE_ENV = development的.env文件变量

如果您的.env文件位于eg.config文件夹的文件夹中,请确保在app.js(您的主js文件)中指定

const dotenv = require('dotenv'); dotenv.config({path:'./config/config.env'});

答案 10 :(得分:0)

如果您在React中遇到此问题,则需要react-scripts@0.2.3及更高版本。另外,要使NODE_ENV以外的其他环境变量在React中起作用,它们必须以REACT_APP_为前缀。

答案 11 :(得分:0)

尽早在您的应用程序中,要求并配置dotenv。

var sample = "29.06.20 look there is something after the date"; RegexOptions options = RegexOptions.None; // Groups numbers 1 2 3 // v----v v----v v-----v Regex regex1 = new Regex(@"(\d{2})\.(\d{2})\.(\d{2})", options); var result = regex1.Replace(sample, "$3.$2.$1"); Console.WriteLine(result); // outputs 20.06.29 look there is something after the date

答案 12 :(得分:0)

对我来说,问题在于我正在使用pkg library将我的应用程序转换为可执行二进制文件。在这种情况下,无法接受的解决方案。但是,使用以下代码解决了我的问题:

const NODE_ENV = (<any>process).pkg ? 'production' : process.env.NODE_ENV;

我在GitHub上找到了此解决方案here

答案 13 :(得分:0)

在电子 Js 中

"scripts": {
    "start": "NODE_ENV=development electron index.js",
},

答案 14 :(得分:0)

如果您定义了名为 process 的任何函数,那么这也可能导致此问题。

答案 15 :(得分:0)

您可以使用 npm 中的 dotenv 包,链接如下:https://www.npmjs.com/package/dotenv

允许您将所有配置放在 .env 文件中