将环境变量传递给pm2不起作用。

5

我在Node.js中使用Babel有两个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

当我执行"yarn build"时,我的Linux会执行此命令:

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

当我尝试在真正的 Web 服务器上以生产模式运行时,这个方式可以良好地工作。我进入项目文件夹并运行此命令,使用 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文件夹,并运行此命令,则首先启动。但是,如果我去另一个文件夹,他不会启动新的应用程序,而是重新加载我已经启动的应用程序,我做错了什么?


请你能否清晰地陈述你的问题? - Peter
在最后一行,该命令仅适用于我使用此pm2 start npm -- run-script start:serve NODE_ENV=production的第一个应用程序,如果我从第二个文件夹进入并使用相同的命令,则只会重新启动我的早期应用程序在线上PM2。 - wavrik
1个回答

5

我使用找到的pm2生态系统成功执行此操作,文档来源于http://pm2.keymetrics.io/docs/usage/application-declaration/

我配置了默认文件并为我的应用程序命名:

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

使用这个命令pm2 start ecosystem.config.js,现在就可以了,我在这里发布帖子是想知道是否有其他人遇到同样的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接