Angular12本地运行正常 Linux服务器构建报NG6002错误如何解决?
排查方案
1. 优先检查文件路径大小写匹配问题
你的tsconfig.json中开启了"forceConsistentCasingInFileNames": true校验规则,且Windows系统对文件名大小写不敏感,Linux系统大小写敏感,这是90%以上跨平台Angular构建失败的原因:
- 核对
app-routing.module.ts中所有导入组件的路径大小写,和服务器上实际文件/文件夹的命名完全一致,比如:- 导入路径写的是
./home/home.component,就要确认服务器上文件夹名是小写home、文件名是小写home.component.ts,不存在首字母大写的Home文件夹或者HomeComponent.ts这类命名 - 所有组件的导入路径大小写也要在
app.module.ts中做同样校验
- 导入路径写的是
2. 清理依赖重新安装
不要把本地Windows环境的node_modules、package-lock.json直接传到服务器,跨系统的依赖二进制包不兼容会导致莫名编译错误:
# 服务器上项目根目录执行 rm -rf node_modules package-lock.json npm install
3. 提取完整错误日志
NG6002是衍生错误,本质是AppRoutingModule本身编译失败才会在被AppModule导入时报错,在服务器执行带详细日志的构建命令,找到AppRoutingModule编译失败的根因:
ng build --verbose
执行后往前翻日志,会找到路径不存在、组件缺失、语法错误这类更明确的错误提示。
4. 本地复现校验
本地执行生产模式构建,提前发现开发模式下未暴露的问题:
ng build --configuration production
如果本地也出现报错,就可以直接在本地调试修复,不用反复同步代码到服务器。
可选校验:路由配置优化
你当前路由配置中同时存在空路径重定向和空路径组件配置,虽然本地运行无问题,但部分严格编译模式下可能触发校验异常,可以调整为更规范的写法:
// 删掉原来的重定向行,直接给HomeComponent设置空路径 const routes: Routes = [ { path:'', component: HomeComponent, children:[] }, { path:'notify', component: NotifyFormComponent }, { path:'login', component: LoginComponent } ];
内容的提问来源于stack exchange,提问作者Hemant Kumar
相关产品推荐
相关产品推荐

