我正在尝试学习有关 NodeJS 的教程。我不认为我错过了任何东西,但是每当我打电话时,process.env.NODE_ENV
我得到的唯一value是undefined
. 根据我的研究,默认值应该是development
. 这个值是如何动态设置的,它最初是在哪里设置的?
为什么 process.env.NODE_ENV 未定义?
IT技术
javascript
node.js
2021-02-28 22:46:34
6个回答
process.env
是对您的环境的引用,因此您必须在那里设置变量。
SET NODE_ENV=development
在 macOS / OS X 或Linux 上:
export NODE_ENV=development
尖端
在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"
或者
console.log(process.env.NODE_ENV.trim() === 'dev') // true
对于使用 *nix(Linux、OS X 等)的人,没有理由通过第二个导出命令来执行此操作,您可以将其链接为调用命令的一部分:
NODE_ENV=development node server.js
更容易,不是吗?:)
我们在 Windows 上使用 node 时遇到了这个问题。
我们没有要求任何试图运行应用程序的人设置这些变量,而是在应用程序中提供了一个后备方案。
var environment = process.env.NODE_ENV || 'development';
在生产环境中,我们会按照通常的方法(SET/export)定义它。
您可以使用跨环境npm 包。它将负责修剪环境变量,并确保它可以跨不同平台工作。
在项目根目录中,运行:
npm install cross-env
然后在你的 package.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
}
其它你可能感兴趣的问题