Nrwl Nx 单仓库中 NestJS 配置文件无法读取如何解决?
Nx 环境 NestJS 配置问题解决方案
支持性说明
Nx 完全原生支持 NestJS 自定义配置,无需额外兼容Nest生态的配置相关依赖(如@nestjs/config、js-yaml等),配置读取失败通常为工作目录不匹配或构建时未包含配置文件两个原因导致。
推荐存放路径与配置方法
按使用场景选择对应的配置方案:
- 单应用私有配置:存放在对应Nest应用的根目录下,路径为
apps/[你的Nest应用名]/
需修改该应用的project.json文件,在build.targets.options.assets数组中添加你的配置文件路径,确保构建时会将配置文件复制到产物目录,示例配置:
代码中读取配置时,推荐使用相对当前文件的路径拼接,避免工作目录差异导致读取失败,示例:{ "targets": { "build": { "options": { "assets": [ "apps/[你的Nest应用名]/src/assets", // 添加你的私有配置文件 "apps/[你的Nest应用名]/.env.development", "apps/[你的Nest应用名]/config.yaml" ] } } } }import { join } from 'path'; // 假设当前文件在src目录下,配置文件和src同级 const configPath = join(__dirname, '../config.yaml'); - 多应用共享配置:存放在Monorepo根目录下
无需额外配置assets,代码中直接读取根目录下的配置文件即可,适合全局通用配置场景。
故障排查方式
- 执行
nx build [你的Nest应用名]后,检查dist/apps/[你的Nest应用名]目录下是否存在你的配置文件,不存在则说明assets配置有误 - 在Nest启动代码中打印
process.cwd()确认当前工作目录,对应调整配置文件的读取路径 - 若使用
@nestjs/config,可在ConfigModule.forRoot()中显式指定envFilePath参数,避免默认路径匹配错误
内容的提问来源于stack exchange,提问作者K-Dawg
相关产品推荐
相关产品推荐

