首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Plesk上的节点应用程序-自定义脚本上的环境变量

Plesk上的节点应用程序-自定义脚本上的环境变量
EN

Stack Overflow用户
提问于 2020-09-04 08:31:21
回答 1查看 1.2K关注 0票数 0

我在v18.0.29上运行一个Node v12应用程序

我在专用部分中设置了所需的环境变量:

此外,“应用程序模式”在理论上应该充当流程的NODE_ENV,并且似乎是这样做的。我也尝试将它添加到“自定义环境变量”中,但这并不能解决我的问题。

问题在于,尽管应用程序本身运行良好,但当我尝试运行自定义脚本(DB迁移)时,Plesk似乎忽略了这些变量,从使用环境"development“可以看出这一点。

代码语言:javascript
复制
> 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运行它:

代码语言:javascript
复制
"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变量,而是得到了一个错误:

代码语言:javascript
复制
> 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似乎忽略或避免设置环境变量。我试着四处寻找,但找不到类似的案子,这让我觉得我只是漏掉了什么。

有什么想法吗?提前谢谢你的时间!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-14 08:28:04

事实证明,Plesk不会将环境变量转发到自定义脚本,不管您多么努力地尝试。因此,在运行脚本之前,我修改了package.json以动态设置变量。

代码语言:javascript
复制
"scripts": {
  ... other scripts ...
  "cli": "export $(cat ../.env.production | xargs) && node cli/index.js"
},

在应用程序文件系统外的受保护文件夹中有一个.env文件,我从其中获取变量并将它们作为args发送到自定义脚本。

不是最优雅的解决方案,但它解决了问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63737597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档