Angular项目ng build无限停滞无输出问题求助
Angular
ng build 无响应问题排查与解决思路 问题描述
作为Angular新手,对NodeJS和Webpack不熟悉。搭建应用后执行ng build时无响应,终端仅显示Building ...,长时间等待无进展、无报错信息,手动终止后未生成dist文件夹。ng serve可正常运行,新建测试项目后问题依旧,排除项目自身代码问题。
当前环境配置
Angular CLI: 17.3.7 Node: 22.2.0 (Unsupported) Package Manager: npm 6.14.9 OS: win32 x64
已尝试操作
- 升级Node到v22后出现此问题,怀疑版本不兼容是诱因
- 尝试用
nvm降级到v21失败,使用官方安装包时因现有版本更新无法完成安装 - 创建全新测试项目验证,问题复现,测试项目配置如下:
测试项目package.json
{ "name": "build-test-app", "version": "0.0.0", "homepage": "https://github.com/jmlinares2019/angular-deploy-test", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "watch": "ng build --watch --configuration development", "test": "ng test", "serve:ssr:build-test-app": "node dist/build-test-app/server/server.mjs" }, "dependencies": { "@angular/animations": "^17.3.0", "@angular/common": "^17.3.0", "@angular/compiler": "^17.3.0", "@angular/core": "^17.3.0", "@angular/forms": "^17.3.0", "@angular/platform-browser": "^17.3.0", "@angular/platform-browser-dynamic": "^17.3.0", "@angular/platform-server": "^17.3.0", "@angular/router": "^17.3.0", "@angular/ssr": "^17.3.5", "express": "^4.18.2", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.14.3" }, "devDependencies": { "@angular-devkit/build-angular": "^17.3.5", "@angular/cli": "^17.3.5", "@angular/compiler-cli": "^17.3.0", "@types/express": "^4.17.17", "@types/jasmine": "~5.1.0", "@types/node": "^18.18.0", "gh-pages": "^6.1.1", "jasmine-core": "~5.1.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.4.2" } }
测试项目angular.json
{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "build-test-app": { "projectType": "application", "schematics": { "@schematics/angular:component": { "style": "scss" } }, "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/build-test-app", "index": "src/index.html", "browser": "src/main.ts", "polyfills": [ "zone.js" ], "tsConfig": "tsconfig.app.json", "inlineStyleLanguage": "scss", "assets": [ "src/favicon.ico", "src/assets" ], "styles": [ "src/styles.scss" ], "scripts": [], "server": "src/main.server.ts", "prerender": true, "ssr": { "entry": "server.ts" } }, "configurations": { "production": { "budgets": [ { "type": "initial", "maximumWarning": "500kb", "maximumError": "1mb" }, { "type": "anyComponentStyle", "maximumWarning": "2kb", "maximumError": "4kb" } ], "outputHashing": "all" }, "development": { "optimization": false, "extractLicenses": false, "sourceMap": true } }, "defaultConfiguration": "production" }, "serve": { "builder": "@angular-devkit/build-angular:dev-server", "configurations": { "production": { "buildTarget": "build-test-app:build:production" }, "development": { "buildTarget": "build-test-app:build:development" } }, "defaultConfiguration": "development" }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", "options": { "buildTarget": "build-test-app:build" } }, "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "polyfills": [ "zone.js", "zone.js/testing" ], "tsConfig": "tsconfig.spec.json", "inlineStyleLanguage": "scss", "assets": [ "src/favicon.ico", "src/assets" ], "styles": [ "src/styles.scss" ], "scripts": [] } } } } } }
更新情况
更新:已降级到Node v20,ng build无响应问题已解决,但出现其他无关问题。
解决思路建议
- 确认Node版本兼容性:Angular 17官方支持Node 18.19+、20.x版本,不支持v22。若降级到v20后仍有问题,可尝试切换到Node 18 LTS版本
- 修复nvm降级失败问题:
- 卸载现有Node版本:在Windows设置中卸载Node.js,手动清理残留文件(如
C:\Program Files\nodejs目录、用户目录下的.npm和node_modules文件夹) - 重新安装nvm,以管理员权限打开终端,执行
nvm install 20、nvm use 20完成版本切换
- 卸载现有Node版本:在Windows设置中卸载Node.js,手动清理残留文件(如
- 升级npm版本:当前npm 6.14.9版本较旧,建议升级到与Node 20匹配的npm版本(Node 20默认搭载npm 9.x),执行
npm install -g npm@latest - 清理项目缓存与依赖:
- 执行
npm cache clean --force清理npm缓存 - 删除项目目录下的
node_modules文件夹和package-lock.json文件,重新执行npm install安装依赖
- 执行
- 临时禁用SSR/Prerender:测试项目的build配置中开启了SSR和Prerender,若降级后仍有异常,可临时关闭这些功能(修改
angular.json中build的options,将prerender和ssr设为false),再执行ng build验证是否正常,逐步排查是否为SSR相关依赖问题 - 查看详细构建日志:执行
ng build --verbose获取详细构建日志,定位卡壳环节,精准排查问题
内容的提问来源于stack exchange,提问作者Juan Manuel Linares
相关产品推荐
相关产品推荐

