【问题标题】:Accessing NODE_ENV at runtime in the server.js configuration of Sails.js在 Sails.js 的 server.js 配置中运行时访问 NODE_ENV
【发布时间】:2014-01-28 06:13:59
【问题描述】:

当我尝试在 Sails.js 的 config/server.js 文件中进行配置更改时,我发现自己无法访问 NODE_ENV 变量。我想配置 express 属性的 serverOptions 标志并绑定 ssl 证书 - 但仅用于生产。

假设我使用 node app.js --prod 启动服务器

这不起作用:

module.exports = { ... };
console.log(process.env.NODE_ENV); // undefined

但这确实有效:

module.exports = { ... };
setTimeout(function () {
  console.log(process.env.NODE_ENV); // production
}, 1000);

基本上我想做的就是:

module.exports = (function () {
  var env = process.env.NODE_ENV,
    ret = { express: {} };

  if (env == 'production') {
    ret.express.serverOptions = { key: ..., cert: ... };
  }

  return ret;
}());

我看到过类似的答案,例如 https://stackoverflow.com/a/21152780/986408,但我不明白它们应该如何工作,而我的却没有。

【问题讨论】:

    标签: node.js sails.js


    【解决方案1】:

    改为这样运行您的应用程序:

    NODE_ENV=production node app.js
    

    sails lift --prod
    

    在应用程序根目录中。您尝试使用的命令行开关旨在传递给sails 可执行文件,而不是直接传递给您的应用程序javascript。

    【讨论】:

    • 谢谢你的建议,我后天去看看。这也会永远有效吗?喜欢forever start app.js --prod
    • 你需要做NODE_ENV=production forever start app.js
    • sails lift --prod 对我不起作用,再次无法访问它,但您的第一个建议效果很好!
    猜你喜欢
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2010-12-26
    相关资源
    最近更新 更多