我正在学习NodeJS的教程。我不认为我错过了任何东西,但每当我调用process。env。NODE_ENV返回的唯一值是undefined。根据我的研究,默认值应该是development。该值如何动态设置,初始设置在哪里?
当前回答
如果您定义了任何名为process的函数,也可能会导致此问题。
其他回答
在我的例子中,我有一个节点应用程序。我的结构方式是我有客户端文件夹和服务器文件夹。我的。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)
你也可以通过代码来设置,例如:
process.env。NODE_ENV = 'test';
的过程。Env是对环境的引用,所以你必须在那里设置变量。
使用实例设置Windows环境变量。
SET NODE_ENV=development
在macOS / OS X或Linux上:
export NODE_ENV=development
在macOS中,对于使用快速版4.x的用户。使用DOTENV插件,需要像这样使用:
在初始化应用程序的文件中安装插件导入后,如下所示: 要求(“dotenv”)。配置({路径:path.resolve (__dirname + / .env)}); 在根目录中创建一个文件'。Env '并添加如下变量: NODE_ENV =发展 或 NODE_ENV = development
定义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试图使这个工作。