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


当前回答

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

其他回答

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

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

我也遇到过这个问题。 我把。env文件移动到根文件夹(不是项目文件夹,更高级别),它工作了。

检查它。这也可能对你有帮助

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

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

你可以使用cross-env npm包。它将负责调整环境变量,并确保它可以跨不同平台工作。

在项目根目录下运行:

npm install cross-env

然后在你的包裹里。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
}

在我的例子中,我有一个节点应用程序。我的结构方式是我有客户端文件夹和服务器文件夹。我的。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)