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

升级Angular 5至6后出现Cannot read property 'prototype' of undefined错误

问题原因分析

这个错误的核心原因是你的应用依赖了Node.js环境特有的核心模块(比如inherits、stream等),但Angular 6+的CLI不再默认提供这些模块的浏览器兼容polyfill。具体来说:

  • hash-base模块依赖Node的inherits模块,而浏览器环境中没有这个模块的原生实现,导致尝试读取prototype时出现undefined错误。
  • 你的package.json里直接引入了stream、timers、vm这些Node核心模块,这些模块原本是为Node环境设计的,在浏览器中无法正常运行。
解决方法

1. 移除不必要的Node核心模块依赖

先检查你的代码是否真的需要stream、timers、vm这几个依赖。如果不是你主动引入的,而是某个第三方库间接带来的,先尝试:

  • 删除package.json中的这三个依赖:
    "stream": "0.0.2",
    "timers": "^0.1.1",
    "vm": "^0.1.0"
    
  • 执行卸载命令移除它们,再重新安装依赖:
    npm uninstall stream timers vm
    npm install
    

2. 添加Node核心模块的Polyfill

如果确实需要这些模块的功能,你需要手动添加浏览器兼容的polyfill:

  • 安装必要的polyfill插件包:
    npm install --save-dev node-polyfill-webpack-plugin
    
  • 修改angular.json配置,在build的options中添加webpack插件配置(如果你的Angular版本支持直接配置):
    "architect": {
      "build": {
        "builder": "@angular-devkit/build-angular:browser",
        "options": {
          // 保留原有其他配置
          "plugins": [
            new NodePolyfillPlugin()
          ]
        }
      }
    }
    
    若版本不支持直接配置,可以通过@angular-builders/custom-webpack扩展webpack配置文件来添加插件。

3. 升级不兼容的第三方库

你的primeng版本是5.2.7,和Angular 6存在版本兼容性问题,这也可能引发依赖链异常:

  • 升级primeng到适配Angular 6的6.x版本:
    npm install primeng@6.1.2 --save
    
    同时记得升级配套的primeicons(如果项目有依赖):
    npm install primeicons@1.0.0 --save
    

4. 检查并升级jszip依赖

jszip可能间接依赖hash-base,尝试升级到兼容Angular 6的版本:

npm install jszip@3.5.0 --save
验证修复

完成上述步骤后,执行ng serve重启应用,检查浏览器控制台是否还存在该错误。如果问题依旧,可以尝试清除缓存后重新安装依赖:

npm cache clean --force
rm -rf node_modules
rm package-lock.json
npm install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:05:23