【问题标题】:NodeJS - process.env.NODE_ENV condition not working when using package.json scriptsNodeJS - 使用 package.json 脚本时 process.env.NODE_ENV 条件不起作用
【发布时间】:2016-12-10 10:46:13
【问题描述】:

我为测试、开发和生产设置了 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';

但是当我运行npm start 时,节点似乎没有得到值。例如在此代码上:

// 数据库连接

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:'));

我收到Cannot read property 'on' of undefined 错误(在运行相同代码时,测试脚本连接到正确的数据库)。

我做错了什么?

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    尝试改用这个:

    "start": "NODE_ENV=dev node index.js",
    

    删除&&

    我想添加一种方法来处理未设置的环境:

    var env = process.env.NODE_ENV || 'dev'
    

    然后将每个引用 process.env.NODE_ENV 更改为 env

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-20
      • 2019-08-24
      • 1970-01-01
      • 2020-10-23
      • 2022-10-17
      • 2017-05-29
      • 1970-01-01
      相关资源
      最近更新 更多