You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS启动时dist目录JSON文件丢失问题求助

解决NestJS开发模式下JSON文件无法复制到dist的问题

问题根源

nest start --watch 是持续运行的阻塞命令,脚本中&&连接的后续命令(yarn copy:json)会在前置命令结束后才执行,但watch模式下Nest进程一直运行,导致复制命令永远不会触发。

方案一:使用NestJS原生资产复制配置(推荐)

直接通过nest-cli.json配置让NestJS自动复制指定文件,无需额外依赖:

  1. 打开项目根目录的nest-cli.json,找到compilerOptions节点
  2. 添加assets和watchAssets配置:
{
  "compilerOptions": {
    "assets": ["engines/**/*.json"],
    "watchAssets": true,
    // 其他原有配置...
  }
}
  • assets:指定需要复制到dist的文件路径(相对于src目录)
  • watchAssets:开启监听,当JSON文件修改时自动同步到dist

配置完成后,直接运行yarn start:dev即可,Nest会在构建/重启时自动复制JSON文件,文件修改后也会同步更新。

方案二:用concurrently并行执行命令

如果不想修改Nest配置,可以借助concurrently实现命令并行:

  1. 安装依赖:
yarn add -D concurrently
  1. 修改package.json中的scripts:
{
  "scripts": {
    "copy:json": "copyfiles -u 2 src/engines/**/*.json dist/engines",
    "copy:watch": "copyfiles -u 2 -w src/engines/**/*.json dist/engines",
    "start": "nest start && yarn copy:json",
    "start:dev": "yarn copy:json && concurrently \"nest start --watch\" \"yarn copy:watch\""
  }
}
  • copy:watch:添加-w参数监听JSON文件变化,自动重新复制
  • concurrently:同时启动Nest的watch模式和JSON文件监听复制命令

这样启动yarn start:dev时,会先执行一次初始复制,之后并行运行两个监听进程,确保JSON文件始终同步到dist。

内容的提问来源于stack exchange,提问作者serge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:12:19