NodeJS 我收到“错误:端口应>= 0且〈65536,使用Sequelize CLI时,在Elastic Beanstalk上收到NaN.”

envsm3lx  于 2023-03-22  发布在  Node.js
关注(0)|答案(1)|浏览(346)

我尝试在Elastic Beanstalk Node.js示例上运行npx sequelize-cli db:migrate --env production。数据库设置如下

"production": {
    "username": "process.env.RDS_USERNAME",
    "password": "process.env.RDS_PASSWORD",
    "database": "process.env.RDS_DB_NAME",
    "host": "process.env.RDS_HOSTNAME",
    "port": "process.env.RDS_PORT",

当我尝试运行该命令时,得到以下输出

npx sequelize-cli db:migrate --env production

Sequelize CLI [Node: 14.18.1, CLI: 6.6.0, ORM: 6.21.0]

Loaded configuration file "settings.json".
Using environment "production".

ERROR: Port should be >= 0 and < 65536. Received NaN.

我在应用程序的根目录中记录了process.env.RDS_PORT,并得到以下内容

console.log('process.env.RDS_PORT', process.env.RDS_PORT)
process.env.RDS_PORT 5432

我在想我该如何解决这个问题。

**方言:**postgres
**Sequelize CLI版本:**6.6.0
**续作版本:**6.21.0

vmdwslir

vmdwslir1#

问题是process.env.*不能用作字符串文字。我意识到如果我的配置和evalprocess.env作为其键的一部分,我会解析它们。
相反,我可以将config.js作为config传递到sequelize-cli

npx sequelize-cli db:migrate --config config.js --env production
// config.js
module.exports = {
  production: {
    username: process.env.RDS_USERNAME,
    password: process.env.RDS_PASSWORD,
    database: process.env.RDS_DB_NAME,
    host: process.env.RDS_HOSTNAME,
    port: process.env.RDS_PORT,
    dialect: 'postgres'
  }
}

更新日期:

传入config.js在Elastic Beanstalk上也不起作用(可能是因为process.env.*在运行动态脚本时不可用)。相反,我构造了连接字符串并将其传入,如下所述。

sequelize db:migrate --url 'mysql://root:password@mysql_host.com/database_name'

相关问题