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

Angular 15升级至16后执行npm run start报资源路径错误

Angular 16升级后启动报错:An asset cannot be written to a location outside of the output path

问题场景

将Angular应用从v15升级至v16,执行npm run ng update完成升级并运行npm install后,执行npm run start启动项目时触发错误:

An unhandled exception occurred: An asset cannot be written to a location outside of the output path.

详细错误日志:

C:\**redacted for confidentiality**\node_modules\rxjs\dist\cjs\internal\util\reportUnhandledError.js:13
            throw err;
            ^

Error: An asset cannot be written to a location outside of the output path.
    at C:\***redacted for confidentiality***\node_modules\@angular-devkit\build-angular\src\utils\normalize-asset-patterns.js:87:19
    at Array.map (<anonymous>)
    at normalizeAssetPatterns (C:\***redacted for confidentiality***\node_modules\@angular-devkit\build-angular\src\utils\normalize-asset-patterns.js:50:26)
    at normalizeBrowserSchema (C:\**redacted for confidentiality**\node_modules\@angular-devkit\build-angular\src\utils\normalize-builder-schema.js:22:71)
    at generateBrowserWebpackConfigFromContext (C:\***redacted for confidentiality***\node_modules\@angular-devkit\build-angular\src\utils\webpack-browser-config.js:116:66)
    at async generateI18nBrowserWebpackConfigFromContext (C:\***redacted for confidentiality***\node_modules\@angular-devkit\build-angular\src\utils\webpack-browser-config.js:67:20)
    at async setup (C:\***redacted for confidentiality***\node_modules\@angular-devkit\build-angular\src\builders\dev-server\webpack-server.js:96:34)

Node.js v18.17.1

环境信息:

  • NodeJS 18.17.1
  • Windows 10

排查与解决步骤

1. 检查angular.json资产配置

错误核心是资产输出路径违反了Angular 16的新限制,重点核对angular.json中projects -> 你的项目名 -> architect -> build -> options -> assets数组:

  • 禁止使用绝对路径或上级目录(如../开头)作为output值,必须是相对于项目默认输出目录(通常为dist/项目名)的相对路径
  • 错误配置示例:
    "assets": [
      {
        "glob": "**/*",
        "input": "src/assets",
        "output": "../assets" // 输出到上级目录,超出允许范围
      }
    ]
    
  • 修正为合规配置:
    "assets": [
      {
        "glob": "**/*",
        "input": "src/assets",
        "output": "assets/" // 相对于输出目录的合法路径
      }
    ]
    

2. 排查自定义Webpack配置(如有)

若项目使用了自定义Webpack配置文件,确认其中是否有修改资产输出路径的逻辑,确保所有资产输出都被限制在Angular默认的输出目录范围内。

3. 清理缓存并重装依赖

  • 删除node_modules目录和package-lock.json文件
  • 执行npm install重新安装依赖
  • 手动删除dist目录或执行npm run clean(若项目有该脚本)
  • 再次运行npm run start尝试启动

4. 确保升级完全

执行完整的Angular升级命令,避免部分依赖未更新导致的兼容性问题:

ng update @angular/core@16 @angular/cli@16

内容的提问来源于stack exchange,提问作者Sandor Szilard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:45:24