ElasticBeanstalk 环境变量无法使用 pm2 访问

问题描述 投票:0回答:2

我已经能够使用如下所示的基本 npm 启动脚本成功在 ElasticBeanstalk 上运行我的应用程序。

"scripts": {
    "start": "NODE_ENV=production node ./bin/www"
}

在我的服务器上,我现在已全局安装 pm2 并更新了我的

start
中的
package.json
脚本以使用 pm2。

"scripts": {
    "start": "pm2 start ./bin/www"
}

pm2 启动该进程,我可以通过查看日志看到这一点,但它似乎无法访问我为 ElasticBeanstalk 设置的环境变量。我使用文件 .ebextensions/options.config 中的

aws:elasticbeanstalk:application:environment
选项设置环境变量,如下所示。

option_settings:
  aws:elasticbeanstalk:application:environment:
    keyOne: foo
    keyTwo: bar
    keyThree: foo

pm2 抱怨无法读取环境变量的未定义属性。

0|www    | TypeError: Cannot read property 'keyOne' of undefined
0|www    |     at Object.<anonymous> (/var/app/current/app.js:26:38)
0|www    |     at Module._compile (internal/modules/cjs/loader.js:999:30)
0|www    |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
0|www    |     at Module.load (internal/modules/cjs/loader.js:863:32)
0|www    |     at Function.Module._load (internal/modules/cjs/loader.js:708:14)
0|www    |     at Module.require (internal/modules/cjs/loader.js:887:19)
0|www    |     at Module.Hook._require.Module.require (/var/app/current/node_modules/require-in-the-middle/index.js:80:39)
0|www    |     at require (internal/modules/cjs/helpers.js:74:18)
0|www    |     at Object.<anonymous> (/var/app/current/bin/www:7:11)
0|www    |     at Module._compile (internal/modules/cjs/loader.js:999:30)

我需要先获取文件吗?我想避免在pm2的ecosystem.config.js文件中设置环境变量,因为我现在还可以使用当前实现的方法从AWS控制台以可视化方式管理环境变量。

node.js amazon-web-services amazon-elastic-beanstalk pm2
2个回答
0
投票

您可以使用生态系统.yml 文件... 在 package.json 中,它以这种方式为我工作......

...
"dependencies": {
        "pm2": "^5.3.1",
    },
"scripts": {
        "start": "./node_modules/pm2/bin/pm2 start ecosystem.yml --env production",
}
...

在 Ecosystem.yml 中我有...

apps:
  - script: ./webhook.js
    name: "webhook-whatsapp"
    env:
      NODE_ENV: development
    env_production:
      NODE_ENV: production

它适用于弹性豆茎:D


-1
投票

如果您已经创建了 PM2 进程并更新了环境变量,则应删除 PM2 进程并使用生态系统文件重新创建它。

删除和创建操作考虑新创建的环境变量,但不考虑重新启动。我不知道为什么。

© www.soinside.com 2019 - 2024. All rights reserved.