set NODE_ENV失效问题

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
两个命令之间不能使用&&

你可能感兴趣的:(疑难问题解惑)