You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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完成版本切换
  • 升级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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 09:35:05