【问题标题】:Passing environment variable to pm2 is not working将环境变量传递给 pm2 不起作用
【发布时间】:2019-08-23 14:03:53
【问题描述】:

我在使用 babel 的节点 js 中有两个 API,我有一个 package.json 命令用于使应用程序正常工作,这是命令:

"build": "del-cli dist/ && babel src -d dist --copy-files",
"serve": "cross-env NODE_ENV=production node dist/index.js",
"start:noupdate": "cross-env NODE_ENV=development babel-node src/index.js",
"start:serve": "cross-env NODE_ENV=production node dist/index.js",

我有两个域,一个是https://api.website1.com.br,另一个是https://website2.com.br/api

它们具有相同的 env 文件名,但每个数据库都有另一个数据,即 .env.production 和 .env.development

当我做这个“纱线构建”时,我的 Linux 执行这个命令:

"build": "del-cli dist/ && babel src -d dist --copy-files",

当我尝试在我的真实网络服务器上进入生产模式时,这工作正常,我从项目中转到文件夹并运行此命令以使应用程序与 PM2 联机:

pm2 start npm -- run-script start:serve NODE_ENV=production

这将使这个命令起作用:

"cross-env NODE_ENV=production node dist/index.js"

应用程序运行良好,但我有一个问题,他只运行一个并且没有创建新的 PM2 应用程序,他只是重新启动我启动的程序。

例如,如果我转到 https://api.website1.com.br 中的文件夹并在他启动时首先运行此命令,但我转到另一个他没有启动但重新加载我已经早期的应用程序不要创建新的应用程序,我做错了什么?

【问题讨论】:

  • 你能清楚地说出你的问题吗?
  • 在最后一行中,该命令仅适用于我使用此 pm2 start npm -- run-script start:serve NODE_ENV=production 的第一个应用程序,如果我从第二个和使用相同的命令,他只在 PM2 上在线重启我早期的应用程序

标签: node.js linux pm2


【解决方案1】:

我设法使用 pm2 生态系统 来解决这个问题,我在来自 http://pm2.keymetrics.io/docs/usage/application-declaration/

的文档中找到了它

我配置默认文件并给我的APP起个名字:

module.exports = {
  apps : [{
    name: "app",
    script: "./app.js",
    env: {
      NODE_ENV: "development",
    },
    env_production: {
      NODE_ENV: "production",
    }
  }]
}

并使用此命令 pm2 start Ecosystem.config.js 现在正在工作,我在这里发布以了解是否有人有同样的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 2022-06-16
    • 2021-09-05
    • 2020-03-27
    • 2017-03-30
    相关资源
    最近更新 更多