#angular #typescript #safari #bigint
#angular #typescript #safari #bigint
Вопрос:
Совсем недавно мое веб-приложение Angular 8 перестало работать в Safari (застряло на index.html страница). В отладчике выдается сообщение об ошибке: не удается найти переменную: BigInt64Array Я ничего не обновлял через npm, поэтому я не уверен, почему это внезапно начало происходить. Я попытался изменить свой target
на «ES5» с «es2015» в tsconfig.js . Я также добавил Safari >= 10
в свой список браузера, но безуспешно. Есть идеи? Спасибо!
package.json
{
"name": "webapi",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"build:ssr": "ng run WebApi:server:dev",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "8.2.12",
"@angular/cdk": "^8.2.3",
"@angular/common": "8.2.12",
"@angular/compiler": "8.2.12",
"@angular/core": "8.2.12",
"@angular/forms": "8.2.12",
"@angular/material": "^8.2.3",
"@angular/platform-browser": "8.2.12",
"@angular/platform-browser-dynamic": "8.2.12",
"@angular/platform-server": "8.2.12",
"@angular/router": "8.2.12",
"@babel/compat-data": "^7.8.0",
"@fortawesome/angular-fontawesome": "^0.5.0",
"@fortawesome/fontawesome-svg-core": "^1.2.28",
"@fortawesome/free-solid-svg-icons": "^5.13.0",
"@ngu/carousel": "^1.5.5",
"@nguniversal/module-map-ngfactory-loader": "8.1.1",
"angular-cd-timer": "^1.0.0",
"aspnet-prerendering": "^3.0.1",
"bootstrap": "^4.4.1",
"core-js": "^3.3.3",
"deep-copy-ts": "^0.5.0",
"font-awesome": "^4.7.0",
"hammerjs": "^2.0.8",
"jquery": "^3.4.1",
"ngx-spinner": "^9.0.2",
"oidc-client": "^1.9.1",
"popper.js": "^1.16.1",
"rxjs": "^6.5.3",
"zone.js": "0.9.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "^0.803.24",
"@angular/cli": "^8.3.14",
"@angular/compiler-cli": "8.2.12",
"@angular/language-service": "8.2.12",
"@types/jasmine": "~3.4.4",
"@types/jasminewd2": "~2.0.8",
"@types/node": "~12.11.6",
"codelyzer": "^5.2.0",
"jasmine-core": "~3.5.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "^4.4.1",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "~2.1.0",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.2",
"typescript": "3.5.3"
},
"resolutions": {
"@babel/preset-env": "7.5.5"
},
"optionalDependencies": {
"node-sass": "^4.12.0",
"protractor": "~5.4.2",
"ts-node": "~8.4.1",
"tslint": "~5.20.0"
}
}
tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"module": "esnext",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "ES5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
список браузеров
# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
# For IE 9-11 support, please uncomment the last line of the file and adjust as needed
> 0.5%
last 2 versions
Firefox ESR
ios_saf >= 10
Safari >= 10
not dead
# IE 9-11
Ответ №1:
Оказывается "deep-copy-ts": "^0.5.0",
, это была проблема. Для этого пакета требуется BigInt64Array, и он был основным изменением в Safari. После удаления он начинает работать.
Комментарии:
1. Спасибо. Похоже, что PR, исправляющий проблему, уже был объединен ( github.com/erikvullings/deep-copy-ts/issues/13 ) но исправление все еще не выпущено (уже почти год).