执行ng serve时遇Module build failed错误:无法读取undefined的'file'属性
执行
ng serve时的Angular编译失败问题排查 错误日志
执行ng serve时出现以下编译错误:
./node_modules/@angular/common/fesm2022/common.mjs - Error: Module build failed (from ./node_modules/@angular-devkit/build-angular/src/tools/babel/webpack-loader.js): TypeError: C:\Users\sheil\Desktop\Temp\angular-tut\node_modules\@angular\common\fesm2022\common.mjs: Cannot read properties of undefined (reading 'file') ./node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs - Error: Module build failed (from ./node_modules/@angular-devkit/build-angular/src/tools/babel/webpack-loader.js): TypeError: C:\Users\sheil\Desktop\Temp\angular-tut\node_modules\@angular\platform-browser\fesm2022\platform-browser.mjs: Cannot read properties of undefined (reading 'file') ./node_modules/@angular/router/fesm2022/router.mjs - Error: Module build failed (from ./node_modules/@angular-devkit/build-angular/src/tools/babel/webpack-loader.js): TypeError: C:\Users\sheil\Desktop\Temp\angular-tut\node_modules\@angular\router\fesm2022\router.mjs: Cannot read properties of undefined (reading 'file') ** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ ** × Failed to compile.
项目package.json配置
{ "name": "angular-tut", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "watch": "ng build --watch --configuration development", "test": "ng test" }, "private": true, "dependencies": { "@angular/animations": "^16.1.0", "@angular/common": "^16.1.0", "@angular/compiler": "^16.1.0", "@angular/core": "^16.1.0", "@angular/forms": "^16.1.0", "@angular/platform-browser": "^16.1.0", "@angular/platform-browser-dynamic": "^16.1.0", "@angular/router": "^16.1.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.13.0" }, "devDependencies": { "@angular-devkit/build-angular": "^16.1.3", "@angular/cli": "~16.1.3", "@angular/compiler-cli": "^16.1.0", "@types/jasmine": "~4.3.0", "jasmine-core": "~4.6.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", "typescript": "~5.1.3" } }
原因分析
该错误属于babel-loader处理Angular ESM模块时的未定义属性读取异常,常见诱因:
- 项目依赖缓存损坏,导致
@angular-devkit/build-angular的Babel相关组件无法正常加载 - 本地存在自定义Babel配置文件(如
.babelrc、babel.config.json),与Angular内置配置冲突 - 依赖版本存在细微偏差(虽当前配置整体兼容,但不排除安装过程中出现的版本不一致)
解决方法
1. 清理缓存并重新安装依赖
这是最直接的修复手段:
- Windows系统:
del package-lock.json rmdir /s /q node_modules npm install - Mac/Linux系统:
rm -rf node_modules package-lock.json npm install
2. 禁用构建缓存启动服务
临时绕过缓存文件的影响:
ng serve --no-cache
3. 移除自定义Babel配置
如果项目根目录存在.babelrc或babel.config.json文件,直接删除后重新执行ng serve。
4. 对齐Angular核心包与构建工具版本
将@angular-devkit/build-angular和@angular/cli版本调整为与Angular核心包完全一致,修改package.json的devDependencies部分:
"@angular-devkit/build-angular": "^16.1.0", "@angular/cli": "~16.1.0"
修改后重新执行依赖安装命令。
内容的提问来源于stack exchange,提问作者Ser
相关产品推荐
相关产品推荐

