我在我的 NodeJS 專案中使用 dotenv 版本 16.0.0,但最近添加的評論功能導致崩潰。如果沒有注釋, .env 檔案可以完美運行,從中加載值。
.env 檔案內容:
# Print out information during runtime, useful for debugging problems not caught.
(true/false)
VERBOSE=false
# Database settings, update for actual deployment environment
DB_USERNAME=postgres
DB_PASSWORD=TINY_DUCK
DB_NAME=user_database
DB_HOST=localhost
DB_PORT=5432
運行 NodeJS 專案的命令是:
mocha -r .env ./tests/testManager.js --exit
運行 NodeJS 專案時收到的錯誤訊息:
× ERROR: C:\Users\thega\Source\Repos\network\.env:1
# Print out information during runtime, useful for debugging problems not caught. (true/false)
^
SyntaxError: Invalid or unexpected token
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1031:15)
at Module._compile (node:internal/modules/cjs/loader:1065:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at exports.requireOrImport (C:\Users\thega\source\repos\network\node_modules\mocha\lib\nodejs\esm-utils.js:60:20)
at async exports.handleRequires (C:\Users\thega\source\repos\network\node_modules\mocha\lib\cli\run-helpers.js:94:28)
at async C:\Users\thega\source\repos\network\node_modules\mocha\lib\cli\run.js:353:25
uj5u.com熱心網友回復:
在我看來,好像您正在嘗試將.env檔案作為 JS 模塊匯入,而不是使用 dotenv 包加載它。
-r標志的意思mocha是“需要”:
這在加載用戶界面或測驗檔案之前需要一個模塊。
它適用于:
- 測驗線束
- 具有增強內置或全域范圍的斷言庫(例如 should.js)
- 使用 esm 的即時 ECMAScript 模塊
- 通過 @babel/register 或 TypeScript 等編譯器使用 ts-node(使用 --require ts-node/register)。
所以它會嘗試將檔案作為 JavaScript 加載,當然這是行不通的。
相反,您可以要求dotenv/config它為您決議檔案并process.env相應地更新:
mocha -r dotenv/config ./tests/testManager.js --exit
或者,如果您已經require('dotenv').config()在代碼中這樣做了,那么您根本不需要任何-r開關。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/466646.html
