web-dev-qa-db-fra.com

Le compilateur Angular nécessite TypeScript> = 3.4.0 et <3.5.0 mais 3.5.3 a été trouvé à la place

J'obtiens l'erreur suivante lorsque je lance l'exécution de npm:

Le compilateur Angular nécessite TypeScript> = 3.4.0 et <3.5.0 mais 3.5.3 a été trouvé à la place.

J'ai essayé les choses suivantes séparément:

npm install TypeScript @ "> = 3.4.0 <3.5.0". Puis supprimé node_modules et package.json. Exécutez l'installation de npm

mise à jour npm --force. Puis supprimé node_modules et package.json. Exécutez l'installation de npm

Je reçois toujours l'erreur:

Mon package.json contient les dépendances suivantes:

  "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 donne la sortie suivante:

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

Qu'est-ce qui pourrait mal tourner ici?

24
user5155835

Applicable pour Angular 9 (à partir de mars 2020)

Pour les projets qui s'exécutent sur Angular 9, les versions TypeScript prises en charge sont TypeScript v3.6.5 à v3.7.5 (inclus). L'installation de toute autre version non prise en charge (telle que 3.8.3) entraînerait une erreur similaire à celle-ci:

ERROR in The Angular Compiler requires TypeScript >=3.6.4 and <3.8.0 but 3.8.3 was found instead

Pour le corriger, vous devez installer les versions prises en charge indiquées sur le message d'erreur. Je vous recommande d'installer TypeScript 3.7.x, car cela débloquera des fonctionnalités utiles telles que le chaînage optionnel et la coalescence nulle.

npm i --save-dev [email protected]

Réponse originale - Applicable pour Angular 8

Il semble que la dernière version (v3.5.3) de TypeScript soit installée. Vous devez plutôt installer TypeScript v3.4.5, qui est la version prise en charge par Angular 8.

Vous pouvez essayer cette commande pour installer la version spécifique de TypeScript, plutôt que la dernière version.

npm i --save-dev [email protected]

En outre, vous souhaiterez peut-être envisager de modifier le signe d'insertion ^ pour la version TypeScript sur votre package.json:

  • Le supprimer complètement signifie qu'il empêchera npm d'installer/d'utiliser la version mineure la plus récente (3.5.3).

    "TypeScript": "3.4.5"

  • Le changer en "~" indiquerait à npm que toute version de correctif est acceptable

    "TypeScript": "~ 3.4.5" // utilisera la dernière version correspondant à 3.4.X

Pour plus d'informations sur l'utilisation du versionnement des packages npm: https://docs.npmjs.com/about-semantic-versioning


Modifié - Applicable à ceux qui travaillent sur d'anciennes versions Angular, telles que Angular 2 à 7 )

|-----------------|--------------------|
| Angular version | TypeScript version |
|-----------------|--------------------|
|       6.1.x     |       3.6.x        |
|-----------------|--------------------|
|       7.2.x     |       2.9.x        |
|-----------------|--------------------|                                 

De même, si nous utilisons d'autres versions Angular, vous pouvez installer les versions TypeScript respectives.

npm i --save-dev [email protected]

Source - Reportez-vous à la liste complète des versions TypeScript prises en charge pour chaque Angular.


Informations utiles supplémentaires

Il existe en fait un moyen d'installer des versions TypeScript qui ne sont pas prises en charge par la version Angular qui est installée dans votre projet, comme indiqué par felipesilva . Un avantage cela vous permettrait d'installer les versions les plus récentes de TypeScript (telles que TypeScript 3.8.3) sur votre projet, déverrouillant ainsi fonctionnalités comme les champs privés.

Sur ton tsconfig.json, vous pouvez simplement définir disableTypeScriptVersionCheck comme true.

{
  // ...
  "angularCompilerOptions": {
    // ...
    "disableTypeScriptVersionCheck": true
  }
}

Cependant, notez que cela n'est pas recommandé par le officiel Angular documentation :

Non recommandé, car les versions non prises en charge de TypeScript peuvent avoir un comportement non défini.

69
wentjun

Veuillez désinstaller TypeScript à l'aide de la commande suivante:

npm uninstall TypeScript

puis installez la version spécifique à TypeScript:

npm i --save-dev [email protected]
8
avinashkr

J'obtenais ce problème dans mon Angular 9 également, mais avec des numéros de version différents.

ERREUR dans le Angular nécessite TypeScript> = 3.6.4 et <3.8.0 mais 3.8.2 a été trouvé à la place.

enter image description here

Ce que j'ai fait,

  1. Je suis allé au changements de rupture angulaires 9
  2. Vous avez recherché la version TypeScript et constaté qu'elle ne prend en charge que la version 3.7
  3. Modifier ma TypeScript version dans package.json comme "TypeScript": "~3.7.0"
  4. a couru npm i

Le ~ ici est important car il s'assurera qu'il ne sera mis à jour que vers la prochaine version du patch (<3.8.0), pas aux versions mineures, si vous utilisez ^ il sera également mis à jour vers des versions mineures (par exemple, 4.0.0).

6
Sibeesh Venu

Exécutez ce script pour trouver la version exacte

npm install TypeScript@">=3.4.0 and <3.5.0" --save
5
Mohammad

Votre erreur est "^" "TypeScript": "^3.4.0" dans votre package.json

la solution est "TypeScript": "~3.4.0"

3
x-rw

Lance ça:

npm i --save-dev TypeScript@~3.4.5
2
Jeremy Moritz

Ce problème dépend principalement de la version @ angular/cli donc TypeScript dépend de angular

lorsque vous mettez à jour angular consultez ce site Web (devDependency)

https://david-dm.org/angular/angular-cli

et fait

npm i --save-dev [email protected]

3.4.5version est requise

1
G SAIBABU

Bonnes nouvelles!

Vous pouvez utiliser TypeScript 3.5 si vous effectuez une mise à niveau vers Angular 8.2+. La version 8.1 ne la prend pas encore en charge.

Preuve: https://github.com/angular/angular-cli/issues/15134#issuecomment-516908416

0
Alexey Grinko

Vous n'avez pas besoin de désinstaller et de réinstaller TypeScript pour pouvoir installer la version spécifique de TypeScript comme recommandé dans l'erreur.

npm install TypeScript@ version

ou vous pouvez courir

npm install TypeScript@ version --save-dev

pour l'enregistrer dans le package json

0
Lokindra Dangi