我正在学习NodeJS的教程。我不认为我错过了任何东西,但每当我调用process。env。NODE_ENV返回的唯一值是undefined。根据我的研究,默认值应该是development。该值如何动态设置,初始设置在哪里?


当前回答

在macOS中,对于使用快速版4.x的用户。使用DOTENV插件,需要像这样使用:

在初始化应用程序的文件中安装插件导入后,如下所示: 要求(“dotenv”)。配置({路径:path.resolve (__dirname + / .env)}); 在根目录中创建一个文件'。Env '并添加如下变量: NODE_ENV =发展 或 NODE_ENV = development

其他回答

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

在电子Js中

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

这是由于操作系统

在你的包裹里。json,确保有你的脚本(app.js是你要执行的主js文件,NODE_ENV是在.env文件中声明的)。例如:

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

对于windows

还要设置你的.env文件变量NODE_ENV=development

如果你的。env文件在一个文件夹,例如。Config文件夹确保在app.js(你的主js文件)中指定

Const dotenv = require('dotenv'); dotenv。Config ({path: './ Config / Config . path: ')env '});

tips

在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"

or

console.log(process.env.NODE_ENV.trim() === 'dev') // true

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

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

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

在生产环境中,我们将根据通常的方法(SET/export)定义它。