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 开关。