网站搜索

typescript - 将 Angular 版本从 8 升级到 13 在浏览器控制台出现错误 "Uncaught TypeError: Cannot read properties of undefined (reading 'crypto')"


我将我的 Angular 项目从版本 8 升级到 13。之后,我尝试编译项目,编译成功,构建也成功。但是,当我尝试在浏览器中打开项目时,显示空白屏幕,并且控制台显示 “Uncaught TypeError: Cannot read properties of undefined (reading 'crypto')”

但我也安装了 crypto.js,但为什么它仍然报错,我还是找不到它。

你能帮我修好吗?

这是我的控制台错误

这是我的 package.json 文件:

 "dependencies": {
    "@agm/core": "1.1.0",
    "@angular-devkit/build-webpack": "~0.1303.8",
    "@angular/animations": "^13.3.11",
    "@angular/common": "^13.3.11",
    "@angular/compiler": "^13.3.11",
    "@angular/core": "^13.3.11",
    "@angular/forms": "^13.3.11",
    "@angular/platform-browser": "^13.3.11",
    "@angular/platform-browser-dynamic": "^13.3.11",
    "@angular/platform-server": "^13.3.11",
    "@angular/router": "^13.3.11",
    "@aspnet/signalr": "^1.1.4",
    "@markpieszak/ng-application-insights": "^7.0.3",
    "@microsoft/applicationinsights-web": "^2.5.11",
    "@ttskch/select2-bootstrap4-theme": "^1.2.1",
    "@types/object-hash": "^1.3.0",
    "angular2-text-mask": "^9.0.0",
    "bootstrap": "^4.4.1",
    "change-case": "^3.1.0",
    "core-js": "^3.1.3",
    "crypto-js": "^4.1.1",
    "escape-string-regexp": "^4.0.0",
    "google-maps-ng2": "^1.0.10",
    "jquery": "3.5.1",
    "lodash": "^4.17.15",
    "moment": "^2.24.0",
    "ng2-currency-mask": "^9.0.2",
    "ngx-order-pipe": "^2.1.1",
    "node-gyp": "^4.0.0",
    "object-hash": "^1.3.1",
    "oidc-client": "1.11.5",
    "pikaday": "^1.8.0",
    "popper.js": "^1.14.7",
    "python": "0.0.4",
    "replace-in-file": "^5.0.2",
    "rxjs": "^6.6.7",
    "rxjs-compat": "~6.3.3",
    "save": "^2.4.0",
    "select2": "^4.0.7-rc.0",
    "select2-bootstrap4-theme": "^1.0.0",
    "tslib": "^2.0.0",
    "util": "^0.12.4",
    "uuid": "^3.3.2",
    "zone.js": "~0.11.4"
    },
  "devDependencies": {
    "@angular-devkit/build-angular": "~13.3.8",
    "@angular/cli": "^13.3.8",
    "@angular/compiler-cli": "^13.3.11",
    "@angular/language-service": "^13.3.11",
    "@types/crypto-js": "^4.1.1",
    "@types/googlemaps": "^3.36.0",
    "@types/jasmine": "~3.6.0",
    "@types/jasminewd2": "~2.0.3",
    "@types/jquery": "^3.3.29",
    "@types/moment": "^2.13.0",
    "@types/node": "^12.11.1",
    "@types/pikaday": "^1.7.4",
    "@types/uuid": "^3.4.4",
    "codelyzer": "^6.0.0",
    "jasmine-core": "~3.6.0",
    "jasmine-spec-reporter": "~5.0.0",
    "karma": "~6.4.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-cli": "^2.0.0",
    "karma-coverage-istanbul-reporter": "~3.0.2",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "protractor": "~7.0.0",
    "rxjs-tslint": "^0.1.7",
    "ts-node": "~7.0.0",
    "tslint": "~6.1.0",
    "tslint-eslint-rules": "^5.4.0",
    "tslint-language-service": "^0.9.9",
    "typescript": "^4.6.4",
    "typescript-tslint-plugin": "^0.3.1",
    "webpack": "^5.73.0"
  }

答案#1

我刚刚找到了这个问题的解决方法。

源链接 - 在 Angular 8 项目中使用 object-hash 会导致“Cannot read property 'crypto' of undefined”错误

感谢 lealceldeiro

我将 object-hash.js 的版本升级到 v2.0.1,它就修好了。