Búsqueda de sitios web

Angular viendo la versión incorrecta de Typescript


Cuando ejecuto ng build obtengo el siguiente error:

ERROR en El compilador de Angular requiere TypeScript >=3.4.0 y <3.6.0 pero se encontró 3.7.4 en su lugar.

Pero en mi package.json, he definido "typescript": "^3.5.3"

Hice una búsqueda en los archivos del proyecto para 3.7.4 y no aparece en ningún lado, entonces ¿por qué Angular-CLI piensa que esta es la versión especificada?

Estoy usando node 12.13.0.

Aquí está mi package.json completo:

{
  "name": "my-app",
  "version": "0.0.0",
  "scripts": {
    "postinstall": "npm run build",
    "ng": "ng",
    "dev": "ng build --aot --watch",
    "dtos": "tsd-ref && ts-ref",
    "build": "ng build --prod",
    "publish": "npm run build",
    "lint": "ng lint",
    "test": "ng test",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^8.2.14",
    "@angular/common": "^8.2.14",
    "@angular/compiler": "^8.2.14",
    "@angular/core": "^8.2.14",
    "@angular/forms": "^8.2.14",
    "@angular/http": "^7.2.15",
    "@angular/platform-browser": "^8.2.14",
    "@angular/platform-browser-dynamic": "^8.2.14",
    "@angular/router": "^8.2.14",
    "@servicestack/angular": "0.0.8",
    "@servicestack/client": "^1.0.31",
    "bootstrap": "^4.4.1",
    "core-js": "^3.6.1",
    "rxjs": "^6.5.4",
    "zone.js": "^0.9.1"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^0.803.21",
    "@angular/cli": "^8.3.21",
    "@angular/compiler-cli": "^8.2.14",
    "@angular/language-service": "^8.2.14",
    "@types/jasmine": "^3.5.0",
    "@types/jasminewd2": "^2.0.8",
    "@types/node": "^12.12.22",
    "codelyzer": "^5.2.1",
    "gulp": "^4.0.2",
    "jasmine-core": "^3.5.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "^4.4.1",
    "karma-chrome-launcher": "~3.0.0",
    "karma-coverage-istanbul-reporter": "^2.1.1",
    "karma-jasmine": "^2.0.1",
    "karma-jasmine-html-reporter": "^1.5.1",
    "protractor": "^5.4.2",
    "ts-node": "^8.5.4",
    "tslint": "^5.20.1",
    "typescript": "^3.5.3"
  }
}

Respuesta #1

La documentación de npm semver explica los significados de los diferentes operadores, por ejemplo, ^Caret Ranges permite la actualización hasta la próxima versión mayor.

Puedes usar rangos con ~Tilde en su lugar para permitir cambios a nivel de parche:

"typescript": "~3.5.3"

O para especificar que se use una versión exacta, debes especificar el número de versión (lo que asume un = implícito por defecto), por ejemplo:

"typescript": "3.5.3"

Artículos relacionados