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

Angular13+Webpack5升级后ng serve加载Worker文件运行时报错求助

Angular 13(Webpack 5)升级后Worker运行时跨源问题解决方案

问题核心

升级后改用Webpack 5原生Worker语法,ng build成功但ng serve触发跨域错误,本质是开发模式下Worker资源的路径解析或资源复制配置错误,导致浏览器无法从http://localhost:4200正确加载Worker脚本。

解决步骤

  • 修正Worker路径写法
    确保使用相对当前文件的路径(添加./前缀),避免路径解析为绝对URL:

    const testworker = new Worker(new URL('./test.worker.bundle.js', import.meta.url));
    
  • 调整Webpack开发环境配置
    若使用自定义Webpack配置(如@angular-builders/custom-webpack),需设置开发环境的publicPath为根路径:

    module.exports = {
      output: {
        publicPath: '/',
        filename: '[name].js'
      }
    };
    

    同时移除原worker-loader相关配置,避免与Webpack 5原生Worker处理逻辑冲突。

  • 配置Angular开发服务器
    在angular.json的serve选项中,确保publicPath正确,并允许本地主机访问:

    "architect": {
      "serve": {
        "builder": "@angular-devkit/build-angular:dev-server",
        "options": {
          "publicPath": "/",
          "allowedHosts": ["localhost"]
        }
      }
    }
    
  • 确保Worker文件被复制到开发服务器目录
    在angular.json的assets数组中添加Worker文件路径,保证ng serve时资源被正确复制:

    "assets": [
      "src/favicon.ico",
      "src/assets",
      "src/test.worker.bundle.js" // 根据实际文件位置调整路径
    ]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:53:29