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


当前回答

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

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

其他回答

必须是app.js中的第一个要求

npm install dotenv

require("dotenv").config();

对我来说,问题是我正在使用pkg库将我的应用程序转换为可执行二进制文件。在这种情况下,公认的解决方案是行不通的。然而,使用下面的代码解决了我的问题:

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

我在GitHub上找到了这个解决方案。

定义process.env。NODE_ENV在包中。Windows/Mac/Linux:

以下是我在我的Mac (MacBook Pro 2019, 16英寸,大苏尔)上工作的方法:

"scripts": {
    "build": "export NODE_ENV=prod || set NODE_ENV=prod&& npx eslint . && node --experimental-json-modules ./backend/app.js && gulp",
},

使用export NODE_ENV=prod || set NODE_ENV= prod&&string可以在Windows和Linux中工作,但我还没有测试过。

如果有人能证实就太好了。

不幸的是,使用cross-env npm包在我的包中根本不起作用。json文件,我花了很长时间在我的Mac试图使这个工作。

安装dotenv模块

Require ('dotenv').config() //写入将要使用该变量的文件中

console.log(process.env.NODE_ENV) //返回保存在。env文件中的值

的过程。Env是对环境的引用,所以你必须在那里设置变量。

使用实例设置Windows环境变量。

SET NODE_ENV=development

在macOS / OS X或Linux上:

export NODE_ENV=development