验证我的 node.js 实例是开发还是生产

新手上路,请多包涵

现在,每当我想将 node.js 服务器部署到我的生产服务器时,我都需要更改所有 IP/DNS/用户名/密码,以便与我的数据库和外部 API 进行各种连接。

这个过程很烦人,有没有办法验证当前运行的 node.js 实例是在 cloud9ide 中还是在我的生产 joyent smartmachine 中?

如果我能够确定(在我的运行代码中)我的 node.js 实例在哪个服务器上运行,我将添加一个条件,将值设置为 prod 或 dev。

谢谢

原文由 guiomie 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 444
2 个回答

通常你应该像这样在生产中运行一个节点应用程序:

NODE_ENV=production node app.js

使用 Express、Socket.IO 和其他应用程序 process.env.NODE_ENV 来确定环境。

在开发中,您可以忽略它,只需使用 node app.js 正常运行应用程序。

您可以像这样在代码中检测环境:

 var env = process.env.NODE_ENV || 'development';
loadConfigFile(env + '.json', doStuff);

资源:

你如何检测 express.js 应用程序中的环境?

原文由 alessioalex 发布,翻译遵循 CC BY-SA 4.0 许可协议

我认为设置环境的最简单方法是将命令行参数传递给您的应用程序。

 node ./server.js dev

在您的脚本中,您需要处理此参数并设置您需要的配置。

 var env = process.argv[2] || 'dev';
switch (env) {
    case 'dev':
        // Setup development config
        break;
    case 'prod':
        // Setup production config
        break;
}

此外,我创建的 模块 使配置过程更容易一些。也许它会对你有所帮助。

原文由 Vadim Baryshev 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题