DotEnv 评论崩溃
DotEnv comments are crashing
我在我的 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
在我看来,您似乎在尝试将 .env
文件导入为 JS 模块,而不是使用 dotenv 包加载它。
mocha
的 -r
标志表示“要求”:
This will require a module before loading the user interface or test files.
It is useful for:
- Test harnesses
- Assertion libraries that has augment built-ins or global scope (such as should.js)
- Instant ECMAScript modules using esm
- Compilers like Babel via @babel/register or TypeScript using ts-node (using --require ts-node/register).
所以它会尝试将文件加载为 JavaScript,当然这行不通。
相反,您可以要求 dotenv/config
,这样它会为您解析文件并相应地更新 process.env
:
mocha -r dotenv/config ./tests/testManager.js --exit
或者,如果您已经在代码中执行了 require('dotenv').config()
,则根本不需要任何 -r
开关。
我在我的 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
在我看来,您似乎在尝试将 .env
文件导入为 JS 模块,而不是使用 dotenv 包加载它。
mocha
的 -r
标志表示“要求”:
This will require a module before loading the user interface or test files.
It is useful for:
- Test harnesses
- Assertion libraries that has augment built-ins or global scope (such as should.js)
- Instant ECMAScript modules using esm
- Compilers like Babel via @babel/register or TypeScript using ts-node (using --require ts-node/register).
所以它会尝试将文件加载为 JavaScript,当然这行不通。
相反,您可以要求 dotenv/config
,这样它会为您解析文件并相应地更新 process.env
:
mocha -r dotenv/config ./tests/testManager.js --exit
或者,如果您已经在代码中执行了 require('dotenv').config()
,则根本不需要任何 -r
开关。