Angular TypeScript-feil med BigInt og valgfri kjeding, nullsamordning
Vi har en applikasjon som må støttes i gammel Chrome (v79).
Angular versjon 13.2.7 Typescript versjon 4.5.5 Node versjon 16.14.0
Vi får en feil:
ERROR: Big integer literals are not available in the configured target environment
Når vi setter målet til 2017 (alt under 2020) og optimalisering er aktivert for byggingen. BigInt er en del av es2020-spesifikasjonen, og jeg kunne ikke finne en polyfill som fungerer.
Når vi setter målet til es2020, blir feilen med BigInt løst, Angular-bygget lykkes, men applikasjonen åpnes ikke i Chrome 79 på grunn av feilen 'Ukjent tegn'. Dette skjer fordi TypeScript ikke transpilerer valgfri kjeding (?.) og null-sammenslåing for es2020, ettersom disse operatorene støttes nativt i es2020-målet. Så vi kan verken bli på es2017 eller hoppe til es2020. Jeg har sett på bruk av Babel-transpilering med Angular og WebPack, men ingenting fungerte. Er det noen som kan fikse dette problemet?
Svar #1
Du kan forhindre feilen ved å legge til es2020.bigint i lib-arrayen i din tsconfig.json:
{
"target": "es2017",
"lib": ["es2017", "dom", "es2020.bigint"]
}
Dette bør målrette ES2017, og i tillegg inkludere typene bare for bigint.
Svar #2
Prøv å bygge appen etter å ha lagt til denne browserslint-konfigurasjonen i package.json.
For nøkkelen production legg til verdien supports bigint i listen.
"browserslist": {
"production": [
"supports bigint",
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
