我在v18.0.29上运行一个Node v12应用程序
我在专用部分中设置了所需的环境变量:

此外,“应用程序模式”在理论上应该充当流程的NODE_ENV,并且似乎是这样做的。我也尝试将它添加到“自定义环境变量”中,但这并不能解决我的问题。
问题在于,尽管应用程序本身运行良好,但当我尝试运行自定义脚本(DB迁移)时,Plesk似乎忽略了这些变量,从使用环境"development“可以看出这一点。
> REDACTED@0.1.0 migrate /var/www/vhosts/REDACTED/httpdocs
> sequelize db:migrate
[4mSequelize CLI [Node: 12.4.0, CLI: 5.4.0, ORM: 5.8.7][24m
Loaded configuration file "config/database.js".
Using environment "development".
[31mERROR:[39m Error parsing url: undefined
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! REDACTED@0.1.0 migrate: `sequelize db:migrate`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the REDACTED@0.1.0 migrate script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /var/www/vhosts/REDACTED/.npm/_logs/2020-09-04T08_13_39_221Z-debug.log如果我试图创建一个强制使用NODE_ENV变量的自定义脚本,则会考虑正确的环境,但其他变量仍然会被忽略。例如,通过创建一个名为migrateprod的脚本并通过Plesk运行它:
"scripts": {
"test": "npm run test:unit && npm run test:e2e",
"test:unit": "mocha tests/unit/**/**.spec.js --require ./tests/setup.js --exit",
"test:e2e": "mocha tests/e2e/**/**.spec.js --require ./tests/setup.js --exit",
"start": "node index.js",
"watch": "nodemon index.js",
"migrate": "sequelize db:migrate",
"migrateprod": "NODE_ENV=production sequelize db:migrate",
"migrate:down": "sequelize db:migrate:undo:all",
"cli": "node cli/index.js"
},现在我可以看到环境的生成,但是没有找到DATABASE_URL变量,而是得到了一个错误:
> REDACTED@0.1.0 migrateprod /var/www/vhosts/REDACTED/httpdocs
> NODE_ENV=production sequelize db:migrate
[4mSequelize CLI [Node: 12.4.0, CLI: 5.4.0, ORM: 5.8.7][24m
Loaded configuration file "config/database.js".
Using environment "production".
[31mERROR:[39m Error parsing url: undefined
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! REDACTED@0.1.0 migrateprod: `NODE_ENV=production sequelize db:migrate`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the REDACTED@0.1.0 migrateprod script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /var/www/vhosts/REDACTED/.npm/_logs/2020-09-04T08_21_51_188Z-debug.log底线是,在运行自定义脚本时,Plesk似乎忽略或避免设置环境变量。我试着四处寻找,但找不到类似的案子,这让我觉得我只是漏掉了什么。
有什么想法吗?提前谢谢你的时间!
发布于 2020-09-14 08:28:04
事实证明,Plesk不会将环境变量转发到自定义脚本,不管您多么努力地尝试。因此,在运行脚本之前,我修改了package.json以动态设置变量。
"scripts": {
... other scripts ...
"cli": "export $(cat ../.env.production | xargs) && node cli/index.js"
},在应用程序文件系统外的受保护文件夹中有一个.env文件,我从其中获取变量并将它们作为args发送到自定义脚本。
不是最优雅的解决方案,但它解决了问题。
https://stackoverflow.com/questions/63737597
复制相似问题