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

Typescript构建ExpressJS项目时丢失swagger.yaml与sequelize-cli文件夹

问题原因

TypeScript编译器tsc仅会编译.ts/.tsx类型的文件,对于swagger.yaml这类静态资源文件,以及sequelize-cli目录下的非TypeScript文件(比如迁移脚本、配置文件等),tsc不会自动将它们复制到dist目录中——这就是你构建后找不到这些内容的核心原因。

解决方案

方案1:使用copyfiles工具(推荐跨平台)

  1. 安装copyfiles作为开发依赖:
npm install copyfiles --save-dev
  1. 修改package.json中的build脚本,在tsc编译完成后添加复制命令:
"scripts": {
  "prod": "node dist/server.js",
  "dev": "npm run build && node dist/server.js",
  "build": "tsc && copyfiles -u 1 src/swagger.yaml src/sequelize-cli/**/* dist/"
}
  • -u 1参数表示移除文件路径中的第一层(也就是src/),确保文件直接输出到dist对应位置,而不是dist/src/下。

方案2:手动添加复制命令(无额外依赖,适合单平台)

如果你不想安装额外工具,可以根据系统添加原生复制命令:

  • Linux/macOS:
"build": "tsc && cp src/swagger.yaml dist/ && cp -r src/sequelize-cli dist/"
  • Windows:
"build": "tsc && xcopy src\\swagger.yaml dist\\ /Y && xcopy src\\sequelize-cli dist\\sequelize-cli\\ /E /Y"

额外检查

确认你的tsconfig.json中include配置已经覆盖了src下所有文件(你当前的配置"include": [ "src/**/*" ]是正确的),但记住这仅让tsc识别这些文件,不会处理非TS类型资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:05:13