简体   繁体   中英

ElasticBeanstalk Environment Variables not accessible using pm2

I have successfully been able to run my application on ElasticBeanstalk using the basic npm start script shown below.

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

On my server I have now installed pm2 globally and updated the start script in my package.json to use pm2.

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

pm2 starts the process, I can see this from looking at my logs however it does not seem to have access to the environment variables I set for ElasticBeanstalk. I set the environment variables with the aws:elasticbeanstalk:application:environment option in the file .ebextensions/options.config shown below.

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

pm2 complains about not being able to read a property of undefined for an environment variable.

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)

Do I need to source a file first? I would like to avoid setting environment variables in a ecosystem.config.js file for pm2 as I can also manage the environment variables at the moment in a visual way from the AWS console using the approach currently implemented.

If you already created the PM2 process and then updated environment variables, you should delete the PM2 process and create it again using ecosystem file.

The delete and create actions consider newly created environment variables, but not the restart. I don't know why.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM