Angular项目执行npm start报错:process.nextTick读取indexOf属性失败
Angular项目npm start构建报错排查方案
错误核心信息
执行npm start时触发以下错误:
> del-proj@0.0.0 build > ng build Node.js version v21.0.0 detected. Odd numbered Node.js versions will not enter LTS status and should not be used for production. ⠼ Generating browser application bundles (phase: building)... node:internal/event_target:1084 process.nextTick(() => { throw err; }); ^ TypeError [Error]: Cannot read properties of undefined (reading 'indexOf') at /home/user_name/project_path/node_modules/@angular-devkit/build-angular/node_modules/sass/sass.dart.js:104395:12
项目依赖版本:
"dependencies": { "@angular/animations": "^16.2.0", "@angular/common": "^16.2.0", "@angular/compiler": "^16.2.0", "@angular/core": "^16.2.0", "@angular/forms": "^16.2.0", "@angular/platform-browser": "^16.2.0", "@angular/platform-browser-dynamic": "^16.2.0", "@angular/router": "^16.2.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.13.0" }, "devDependencies": { "@angular-devkit/build-angular": "~16.2.6", "@angular/cli": "^16.2.6", "@angular/compiler-cli": "^16.2.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", "sass": "^1.69.4", "typescript": "~5.1.3" }
排查与解决步骤
1. 切换兼容的Node.js版本
Angular 16官方仅支持Node.js 16.14.0+ 或 18.x LTS版本,v21.0.0是非LTS的开发版本,存在严重兼容性问题,这是触发错误的主要原因:
- 用nvm切换到18.x LTS:
nvm install 18 nvm use 18 - 清理缓存并重装依赖:
rm -rf node_modules package-lock.json npm install - 重新运行
npm start测试
2. 修复sass版本冲突
错误栈指向构建工具内置的sass文件,项目安装的sass@1.69.4可能与@angular-devkit/build-angular依赖的sass版本不兼容:
- 修改
package.json中的sass版本为Angular 16兼容的稳定版:"sass": "~1.68.0" - 清理并重装依赖:
rm -rf node_modules package-lock.json npm install npm start
3. 确保CLI与构建工具版本完全匹配
强制同步@angular/cli和@angular-devkit/build-angular版本,避免潜在的版本差异问题:
- 执行以下命令更新依赖:
npm install @angular/cli@16.2.6 @angular-devkit/build-angular@16.2.6 --save-dev - 再次尝试构建项目
内容的提问来源于stack exchange,提问作者Leandro Cadete
相关产品推荐
相关产品推荐

