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,

  1. Šiel na prelomové zmeny Angular 9
  2. Vyhľadal som verziu typescript a zistil som, že podporuje iba 3.7
  3. Uprav moju verziu typescript v package.json na "typescript": "~3.7.0"
  4. 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).

Súvisiace články