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


当前回答

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

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

SET NODE_ENV=development

在macOS / OS X或Linux上:

export NODE_ENV=development

其他回答

安装dotenv模块

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

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

你可以从npm中使用dotenv包,这里是链接:https://www.npmjs.com/package/dotenv

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

在包中。我们必须像下面这样配置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”命令

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

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

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

在我的例子中,我有一个节点应用程序。我的结构方式是我有客户端文件夹和服务器文件夹。我的。env文件和这两个文件夹放在一起。我的服务器文件需要。env文件。它返回未定义,因为它不在服务器文件中。这是一个疏忽。

App
-client
-server
-.env

Instead I moved .env inside server file like so:

App
-client
-server
 |-.env <---here
 |-package.json
 |-and the rest of the server files...

(before this - ofcourse have the dotenv npm package installed and follow its doc)