在Ubuntu中这很简单;我可以运行应用程序使用:
$ NODE_ENV=production node myapp/app.js
但是,这在Windows上不起作用。是否有可以设置属性的配置文件?
在Ubuntu中这很简单;我可以运行应用程序使用:
$ NODE_ENV=production node myapp/app.js
但是,这在Windows上不起作用。是否有可以设置属性的配置文件?
当前回答
只是为了澄清一下,对于那些可能会揪着头发的人来说……
如果你在Windows上使用git bash, set node_env=production&& node whatever.js似乎不起作用。相反,使用本机cmd。然后,使用set node_env=production&& node whatever。Jsworks如预期的那样。
我的用例:
我在Windows上开发,因为我的工作流程要快得多,但我需要确保我的应用程序的特定于开发的中间件不会在生产环境中触发。
其他回答
如果你能在调用启动Windows上的Node.js时在同一行设置参数,那就太理想了。仔细看下面的内容,并按照上面说的那样运行:
你有两个选择:
在命令行: set NODE_ENV=production&&npm start 或 set NODE_ENV=production&&node index.js 在Windows上工作的技巧是你需要删除“&&”前后的空白。配置您的包。Json文件与start_windows(见下文)下面。然后在命令行执行“npm Run start_windows”。 / / package.json "脚本":{ "start": "node index.js" "start_windows": "set NODE_ENV=production&&node index.js" }
我在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'。
对于Windows
set NODE_ENV=development && react-scripts start
适用于Ubuntu, Linux, macOs
NODE_ENV=开发反应脚本启动
对于多个环境变量,.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中被取消设置。
我写了一个模块win-node-env,你可以像在*nix中一样运行你的命令。
NODE_ENV=production node myapp/app.js
它通过创建NODE_ENV来工作。cmd命令,设置NODE_ENV环境变量,并使用该命令的其余部分及其参数生成一个子进程。
只需安装它(全局),并运行你的npm脚本命令,它应该会自动使它们工作。
npm install -g win-node-env