NestJS集成SWC编译报错:无法找到模块'path-to-project/src/app.module'
解决SWC编译NestJS时模块路径错误问题
问题根源
SWC的模块解析配置未适配NestJS项目结构,编译时错误将相对路径./app.module转换为物理绝对路径path-to-project/src/app.module,导致运行时找不到模块。
解决方案
1. 修正.swcrc配置
确保SWC的模块解析规则正确指向项目源码目录,避免路径被错误转换:
{ "jsc": { "parser": { "syntax": "typescript", "decorators": true }, "transform": { "legacyDecorator": true, "decoratorMetadata": true }, "baseUrl": "./src", "paths": { "@/*": ["*"] } }, "module": { "type": "commonjs", "resolveDir": "./src" }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"] }
关键说明:
resolveDir指定模块解析的根目录,强制SWC基于src目录解析相对路径- 保持
jsc.baseUrl与项目源码目录一致,避免路径解析冲突
2. 调整编译命令
在package.json的scripts中确认SWC编译命令正确指向src目录:
{ "scripts": { "build": "swc src -d dist --source-maps" } }
不要添加多余的路径参数,防止SWC错误解析模块引用路径。
3. 清理缓存并重新编译
删除旧编译产物及SWC缓存,避免残留配置影响结果:
rm -rf dist node_modules/.swc npm run build
4. 同步tsconfig.json配置
确保TypeScript配置与SWC配置一致,避免解析规则冲突:
{ "compilerOptions": { "baseUrl": "./src", "paths": { "@/*": ["*"] }, "module": "commonjs", "target": "ES2021" }, "include": ["src/**/*"] }
内容的提问来源于stack exchange,提问作者krokodaws
相关产品推荐
相关产品推荐

