package.json中定义了启动脚本:
set NODE_ENV=mock && node app.js
config.js文件中通过process.env.NODE_ENV的值,指向不同的服务:
let list = {};
list["test"] = "http:127.0.0.1:1234/";
list["mock"] = "http:127.0.0.1:1235/";
var environment = process.env.NODE_ENV;
console.log(environment);
console.log(list );
console.log(list ["mock"]);
console.log(list [environment]);
if(list [environment]){
console.log(list [environment]);
}else{
console.log("error");
}
执行命令后的结果:
mock
{ test: 'http://127.0.0.1:1234/',
mock: 'http://127.0.0.1:1235/' }
http://127.0.0.1:1235/
undefined
error
最后将命令改成:
set NODE_ENV=mock&& node app.js
即&&前面不能有空格
执行命令后的结果为:
mock
{ test: 'http://127.0.0.1:1234/',
mock: 'http://127.0.0.1:1235/' }
http://127.0.0.1:1235/
undefined
http://127.0.0.1:1235/
是期待的结果
为什么一开始的命令也获取到了NODE_ENV,但是输出却错误呢?
扩展:
也可以使用cross-env来设置环境变量,首先安装cross-env:
npm i cross-env --save-dev
通过cross-env添加启动命令:
cross-env NODE_ENV=mock node app.js