簡體   English   中英

Plesk 上的節點應用程序 - 自定義腳本上的環境變量

[英]Node app on Plesk - Environment variables on custom scripts

我正在 Plesk Obsidian v18.0.29 上運行 Node v12 應用程序

我已經在專用部分設置了所需的環境變量: Plesk 配置

此外,“應用程序模式”理論上應該作為進程的NODE_ENV並且似乎是這樣做的。 僅供參考,我也嘗試將其添加到“自定義環境變量”中,但這並不能解決我的問題。

問題在於,盡管應用程序本身運行良好,但當我嘗試運行自定義腳本(數據庫遷移)時,Plesk 似乎忽略了這些變量,正如您在使用環境“開發”中所見

> 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 似乎在運行自定義腳本時忽略或避免設置環境變量。 我試着四處尋找,但找不到任何類似的案例,這讓我覺得我只是錯過了一些東西。

有任何想法嗎? 在此先感謝您的時間!

事實證明,無論您多么努力,Plesk 都不會將環境變量轉發到自定義腳本。 所以我修改了package.json以在運行腳本之前即時設置變量。

"scripts": {
  ... other scripts ...
  "cli": "export $(cat ../.env.production | xargs) && node cli/index.js"
},

在應用程序文件系統外的受保護文件夾中有一個 .env 文件,我從中獲取變量並將它們作為參數發送到自定義腳本。

不是最優雅的解決方案,但它解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM