Kompilátor Angular vyžaduje TypeScript >=3.4.0 a <3.5.0, ale namiesto toho bol nájdený 3.5.3
Pri spustení npm run build dostávam nasledujúcu chybu:
Kompilátor Angular vyžaduje TypeScript >=3.4.0 a <3.5.0, ale namiesto toho bola nájdená verzia 3.5.3.
Skúsil som nasledovné veci samostatne:
npm install typescript@">=3.4.0 <3.5.0". Potom zmažte node_modules a package.json. Spustite npm install
npm update --force. Potom vymažte node_modules a package.json. Spustite npm install
Stále dostávam túto chybu:
Môj súbor package.json obsahuje nasledujúce závislosti:
"dependencies": {
"@angular/animations": "8.1.0",
"@angular/cdk": "^8.0.2",
"@angular/cli": "^8.1.0",
"@angular/common": "8.1.0",
"@angular/compiler": "8.1.0",
"@angular/core": "8.1.0",
"@angular/forms": "8.1.0",
"@angular/http": "7.2.15",
"@angular/material": "^8.0.2",
"@angular/platform-browser": "8.1.0",
"@angular/platform-browser-dynamic": "8.1.0",
"@angular/router": "8.1.0",
"@ngx-translate/core": "^11.0.1",
"@ngx-translate/http-loader": "^4.0.0",
"angular-user-idle": "^2.1.2",
"angular2-cookie": "^1.2.6",
"core-js": "^2.6.7",
"rxjs": "6.5.2",
"rxjs-tslint": "^0.1.5",
"stream": "0.0.2",
},
"devDependencies": {
"@angular-devkit/build-angular": "^0.801.0",
"@angular/compiler-cli": "8.1.0",
"@angular/language-service": "8.1.0",
"@types/jasmine": "~3.3.13",
"@types/jasminewd2": "~2.0.6",
"@types/node": "~12.6.1",
"jasmine-core": "~3.4.0",
"jasmine-spec-reporter": "~4.2.1",
"protractor": "~5.4.2",
"ts-node": "~8.3.0",
"tslint": "~5.18.0",
"typescript": "^3.4.5"
}
ng --version poskytuje nasledujúci výstup:
Angular CLI: 8.1.2
Node: 10.16.0
OS: win32 x64
Angular: 8.1.0
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.801.2
@angular-devkit/build-angular 0.801.2
@angular-devkit/build-optimizer 0.801.2
@angular-devkit/build-webpack 0.801.2
@angular-devkit/core 8.1.2
@angular-devkit/schematics 8.1.2
@angular/cdk 8.1.1
@angular/cli 8.1.2
@angular/http 7.2.15
@angular/material 8.1.1
@ngtools/webpack 8.1.2
@schematics/angular 8.1.2
@schematics/update 0.801.2
rxjs 6.5.2
typescript 3.5.3
webpack 4.35.2
Čo by tu mohlo byť zle?
Odpoveď č. 1
Platné pre Angular 12
Pre projekty, ktoré bežia na najnovších verziách Angular 12, by ste mali používať TypeScript v4.2.x až 4.3.x
npm i -D [email
Platné pre Angular 11
Pre projekty, ktoré bežia na najnovších verziách Angular 11 (11.2.x), podporuje až TypeScript v4.1.5.
npm i -D [email
Platné pre Angular 10 (k júnu 2020)
Pre tých, ktorí používajú Angular 10, prosím, vezmite na vedomie, že musí byť nainštalovaný TypeScript 3.9, pretože správcovia odstránili podporu pre TypeScript 3.8. Najbezpečnejšou voľbou by bolo nainštalovať najnovšiu verziu TypeScriptu
npm i -D [email
Platné pre Angular 9 (k máju 2020)
Pre projekty, ktoré bežia na najnovších verziách Angular 9 (v9.1.x), podporuje až TypeScript v3.8.3. Ak používate niečo novšie (napríklad TypeScript v3.9.0), mali by ste ho znížiť a nainštalovať podporované verzie:
npm i -D [email
Pre projekty, ktoré bežia na skorších verziách Angular 9 (v9.0.x), podporované verzie TypeScript sú TypeScript v3.6.5 až v3.7.5 (vrátane). Inštalácia akejkoľvek inej nepodporovanej verzie (napríklad 3.8.3) by spôsobila chybu podobnú tejto:
ERROR in The Angular Compiler requires TypeScript >=3.6.4 and <3.8.0 but 3.8.3 was found instead
Na opravu by ste mali nainštalovať podporované verzie uvedené v chybovej správe. Odporúčam vám nainštalovať Typescript 3.7.x, pretože to odomkne užitočné funkcie, ako sú Voliteľné reťazenie a Spojenie s nulovou hodnotou.
npm i -D [email
Prípadne môžete jednoducho aktualizovať Angular na najnovšiu menšiu verziu (v9.1.x), pretože by nemala obsahovať žiadne zlomové zmeny.
Použiteľné pre Angular 8 (Pôvodná odpoveď)
Zdá sa, že máte nainštalovanú najnovšiu verziu TypeScriptu (v3.5.3). Mali by ste namiesto toho nainštalovať TypeScript v3.4.5, čo je verzia podporovaná Angularom 8.
Môžete skúsiť tento príkaz na inštaláciu konkrétnej verzie TypeScriptu, namiesto najnovšej verzie.
npm i -D [email
Okrem toho by ste mohli zvážiť zmenu stĺpca ^ pri verzii TypeScript vo vašom súbore package.json:
Úplné odstránenie znamená, že to zabráni npm v inštalácii/používaní najnovšej menšej verzie (3.5.3).
"typescript": "3.4.5"
Zmena na „~“ by oznámila npm, že je akceptovateľné akékoľvek patchové vydanie
"typescript": "~3.4.5"/bude používať najnovšiu verziu, ktorá zodpovedá 3.4.X
Pre viac informácií o používaní verzovania balíkov npm: https://docs.npmjs.com/about-semantic-versioning
Platí pre tých, ktorí pracujú na starších verziách Angularu, ako napríklad Angular 2 až 7
|-----------------|--------------------|
| Angular version | TypeScript version |
|-----------------|--------------------|
| 6.1.x | 3.6.x |
|-----------------|--------------------|
| 7.2.x | 2.9.x |
|-----------------|--------------------|
Rovnako, ak používame akékoľvek iné verzie Angular, môžete nainštalovať príslušné verzie TypeScriptu.
npm i -D [email
Zdroj - Pozrite si úplný zoznam podporovaných verzií TypeScriptu pre každú verziu Angularu.
Ďalšie užitočné informácie
Existuje vlastne spôsob, ako nainštalovať verzie TypeScript, ktoré nie sú „podporované“ verziou Angular, ktorá je nainštalovaná vo vašom projekte, ako upozornil felipesilva. Jednou z výhod takéhoto postupu by bolo umožniť vám nainštalovať najnovšie verzie TypeScript (napríklad TypeScript 4.1.2 alebo ktorúkoľvek z beta verzií) vo vašom projekte.
Vo vašom tsconfig.json môžete jednoducho nastaviť disableTypeScriptVersionCheck na true.
{
// ...
"angularCompilerOptions": {
// ...
"disableTypeScriptVersionCheck": true
}
}
Však si všimnite, že takéto konanie nie je odporúčané oficiálnou dokumentáciou Angularu:
Nie je odporúčané, pretože nepodporované verzie TypeScriptu môžu mať nedefinované správanie.
Odpoveď č. 2
Máte dve možnosti:
1-Automaticky:
toto nainštaluje správnu verziu (zmeňte čísla verzií podľa chyby)
npm install typescript@">=3.4.0 and <3.5.0" --save-dev
2-Ručne:
prejdite do package.json a zmeňte svoju verziu typescript, ak chcete aktualizovať svoj projekt Angular na
Angular 17 (npm install typescript@"~5.2.0" --save-dev)
"devDependencies": {
...
"typescript": "~5.2.0"
}
Angular 16 (npm install typescript@"~4.9.0" --save-dev)
"devDependencies": {
...
"typescript": "~4.9.0"
}
Angular 15 (npm install typescript@"~4.8.0" --save-dev)
"devDependencies": {
...
"typescript": "~4.8.0"
}
Angular 14 (npm install typescript@"~4.7.0" --save-dev)
"devDependencies": {
...
"typescript": "~4.7.0"
}
Angular 13 (npm install typescript@"~4.4.0" --save-dev)
"devDependencies": {
...
"typescript": "~4.4.0"
}
Angular 12 (npm install typescript@"~4.2.0" --save-dev)
"devDependencies": {
...
"typescript": "~4.2.0"
}
Angular 11 (npm install typescript@"~4.0.0" --save-dev)
"devDependencies": {
...
"typescript": "~4.0.0"
}
Angular 10 (npm install typescript@"~3.8.0" --save-dev)
"devDependencies": {
...
"typescript": "~3.8.0"
}
Angular 9 (npm install typescript@"~3.7.0" --save-dev)
"devDependencies": {
...
"typescript": "~3.7.0"
}
Angular 8 (npm install typescript@"~3.4.0" --save-dev)
"devDependencies": {
...
"typescript": "~3.4.0"
}
Angular 7 (npm install typescript@"~3.1.0" --save-dev)
"devDependencies": {
...
"typescript": "~3.1.0"
}
Angular 6 (npm install typescript@"~2.9.0" --save-dev)
"devDependencies": {
...
"typescript": "~2.9.0"
}
Angular 4 (npm install typescript@"~2.2.0" --save-dev)
"devDependencies": {
...
"typescript": "~2.2.0"
}
Potom spustite:
npm install
Odpoveď č. 3
Spustite tento skript, aby ste zistili presnú verziu
npm install typescript@">=3.4.0 and <3.5.0" --save-dev
Odpoveď č. 4
Odstráňte TypeScript použitím nasledujúceho príkazu:
npm uninstall typescript
a potom nainštalujte konkrétnu verziu TypeScript:
npm i --save-dev [email
Odpoveď č. 5
Tento problém sa mi vyskytoval aj v mojom Angular 9, ale s rôznymi číslami verzií.
CHYBA v kompilátore Angular vyžaduje TypeScript >=3.6.4 a <3.8.0, ale namiesto toho bol nájdený 3.8.2.
To, čo som urobil, bolo,
- Šiel na prelomové zmeny Angular 9
- Vyhľadal som verziu
typescripta zistil som, že podporuje iba 3.7 - Uprav moju verziu
typescriptvpackage.jsonna"typescript": "~3.7.0" - spustil
npm i
~ tu je dôležité, pretože zabezpečí, že sa aktualizuje len na ďalšiu patch verziu (<3.8.0), nie na menšie verzie. Ak použijete ^, aktualizuje sa aj na menšie verzie (napríklad 4.0.0).
