在Ubuntu中这很简单;我可以运行应用程序使用:
$ NODE_ENV=production node myapp/app.js
但是,这在Windows上不起作用。是否有可以设置属性的配置文件?
在Ubuntu中这很简单;我可以运行应用程序使用:
$ NODE_ENV=production node myapp/app.js
但是,这在Windows上不起作用。是否有可以设置属性的配置文件?
当前回答
在Windows 10中,我使用$env:NODE_ENV="Production"
这在我的vscode终端上工作。但如果你的服务器正在监听,首先需要停止并设置你的env变量,然后重新启动应用程序。这种方法对我很有效。
其他回答
似乎
{
"start_windows": "set NODE_ENV=test"
}
对我没用。我目前正在我的Windows电脑上尝试这个功能。当我点击:
npm run start_windows
它会在控制台上执行,没有错误,但是当我尝试回显时
echo %NODE_ENV%
什么都没有出来,这意味着它不存在,它根本就没有设置……
我在Visual Studio 2013的Windows 7 64位上使用Node.js的经验是,你需要使用
setx NODE_ENV development
从CMD窗口。并且您必须重新启动Visual Studio才能识别新的值。
set语法仅在设置它的cmd窗口的持续时间内有效。
在Node.js中的简单测试:
console.log('process.env.NODE_ENV = ' + process.env.NODE_ENV);
当使用set时返回'undefined',如果使用setx并重新启动Visual Studio,它将返回'development'。
我刚刚发现了一个很好的Node.js包,它可以用独特的语法定义环境变量,跨平台。
https://www.npmjs.com/package/cross-env
它允许你这样写:
cross-env NODE_ENV=production my-command
这非常方便!不再有Windows或Unix特定的命令!
PowerShell:
$env:NODE_ENV="production"
对于多个环境变量,.env文件更方便:
# .env.example, committed to repo
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
# .env, private, .gitignore it
DB_HOST=real-hostname.example.com
DB_USER=real-user-name
DB_PASS=REAL_PASSWORD
dotenv-safe很容易使用:
使用npm Install——save-dev dotenv-safe安装。 将它包含在代码中(最好在index.js的开头),并直接与进程一起使用它。env命令:
require('dotenv').load()
console.log(process.env.DB_HOST)
不要忘记忽略VCS中的.env文件。
如果在.env中“定义”了一个变量,那么程序就会快速失败。Example作为环境变量或在.env中被取消设置。