node.js - NestJS .env 文件未构建
问题描述
我在我的 NestJS 项目中使用 dotenv v8.2.0,它一直在我的生产环境中工作。我在我的新电脑上克隆了这个项目,在根文件夹中创建了一个带有正确变量的 .env 文件,但是 .env 文件现在没有内置到 dist 文件夹中。
.env 文件:
databaseHost=database-di...
databasePassword=a3^U...
我的 main.ts 文件的设置(仅相关部分):
import { config } from 'dotenv';
import * as path from 'path';`
const ENV_FILE = path.join(__dirname, '..', '.env');
config({ path: ENV_FILE });
当我记录 dotenv 配置函数时,我得到以下信息:
{
error: Error: ENOENT: no such file or directory, open 'C:\Users\Jasper\***\dist\.env'
at Object.openSync (fs.js:461:3)
at Object.readFileSync (fs.js:364:35)
at Object.config (C:\Users\Jasper\***\node_modules\dotenv\lib\main.js:96:29)
at Object.<anonymous> (C:\Users\Jasper\***\dist\src\main.js:21:22)
at Module._compile (internal/modules/cjs/loader.js:1176:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1196:10)
at Module.load (internal/modules/cjs/loader.js:1040:32)
at Function.Module._load (internal/modules/cjs/loader.js:929:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47 {
errno: -4058,
syscall: 'open',
code: 'ENOENT',
path: 'C:\\Users\\Jasper\\***\\dist\\.env'
}
当我查看 dist 文件夹时,.env 文件确实没有被移植过来,而它过去总是可以工作的。在 .env 文件夹中记录变量会返回undefined
.
有谁知道我做错了什么?
解决方案
文件.env
不是 Typescript 或 JavaScript 文件,因此不会被 Typescript 移动。您也许可以使用 的assets
属性来移动它nest-cli.json
,但是您需要确保提交您的.env
文件,这是一种不好的做法。相反,该.env
文件应该从项目根目录(与 相同级别package.json
)读取,并且每个环境都应该有自己的.env
文件以保护机密。
推荐阅读
- java - 在 GCP Shell 中无法解析导入 org.apache 语句
- javascript - 数字(错误)Image.reduceRegion:在无界图像上聚合时提供“几何”参数。Google 地球引擎中的代码错误
- java - 如何在eclipse java项目中使用外部JAR文件
- api - 获取 api 中的查询参数 - 未处理的异常:类型 '_InternalLinkedHashMap
' 不是类型 'Map 的子类型 ' - python - 使用 Python 脚本将数据检索到 Telegram 机器人
- python - 如何用python解析modbusTCP/RTU数据(标准化计算:Raw_data、进程变量、big-endian、Bitwise解析)
- reactjs - 提升状态并访问动态创建的输入文本字段的值
- websocket - 如何使用nestjs向单个客户端广播消息?
- c# - MS Office Interop - 带密码的 DOCX 到 PDF
- python - 在类范围内理解python中的__privateVariable