Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS-process.env.NODE_env条件在使用package.json脚本时不起作用_Javascript_Node.js - Fatal编程技术网

Javascript NodeJS-process.env.NODE_env条件在使用package.json脚本时不起作用

Javascript NodeJS-process.env.NODE_env条件在使用package.json脚本时不起作用,javascript,node.js,Javascript,Node.js,我为测试、开发和生产设置了3个不同的数据库 现在,我想让我的express应用程序根据我运行的脚本在这些数据库之间切换 These are my current scripts: "scripts": { "start": "NODE_ENV=dev && node index.js", "test": "mocha --timeout 10000" } 我在测试脚本顶部分配process.env.NODE_env值,如下所示,测试脚本在正确的DB上运行良

我为测试、开发和生产设置了3个不同的数据库

现在,我想让我的express应用程序根据我运行的脚本在这些数据库之间切换

These are my current scripts:
 "scripts": {
    "start": "NODE_ENV=dev && node index.js",
    "test": "mocha --timeout 10000"
  }
我在测试脚本顶部分配process.env.NODE_env值,如下所示,测试脚本在正确的DB上运行良好:

process.env.NODE_ENV = 'test';
但当我运行
npmstart
时,node似乎没有获得该值。例如,关于此代码:

//数据库连接

let db;
if (process.env.NODE_ENV == 'test') {
  mongoose.connect(config.DB.test, options);
  db = mongoose.connection;
} else if (process.env.NODE_ENV == 'dev') {
  mongoose.connect(config.DB.dev, options);
  db = mongoose.connection;
  app.use(morgan('combined'));
} else if (process.env.NODE_ENV == 'prod') {
  mongoose.connect(config.DB.prod, options);
  db = mongoose.connection;
  app.use(morgan('combined'));
}

db.on('error', console.error.bind(console, 'connection error:'));
我得到未定义的
错误的
无法读取属性'on'(在运行相同的代码时,测试脚本连接到正确的数据库)


我做错了什么?

试着用这个来代替:

"start": "NODE_ENV=dev node index.js",
删除
&

我想添加一种处理env not set的方法:

var env = process.env.NODE_ENV || 'dev'
然后将每个引用的
process.env.NODE\u env
更改为
env