Другая версия Typescript, используемая в сценарии `npm run`
Я использую npm в качестве инструмента сборки и одну из записей в scripts
словарь моего packages.json
файл "tsc"
, который вызывает .ts
файлы в моем проекте для компиляции. Однако я заметил, что я получаю разные сообщения об ошибках TypeScript при вызове > tsc
прямо против вызова > npm run start
, Я обновил запись скрипта до (tsc -v; tsc)
и я получаю:
> npm run build
message TS6029: Version 1.6.2
тогда как если я вызываю ту же команду напрямую, я получаю:
> (tsc -v; tsc)
Version 1.8.10
Что может вызвать такое поведение?
2 ответа
К сожалению. Глядя на мой package.json
файл, я понял, что devDependencies
включил эту запись: "typescript": "~1.6.2"
, Я обновил его до ~1.8.10
и сделал > npm install
и проблема ушла.
Другое соображение (для тех, кто также может столкнуться с подобной проблемой, но без прямой зависимости), заключается в том, что другие пакеты npm могут зависеть от TypeScript, и эти пакеты используют более старую версию. В этом случае вы ничего не увидите в своем файле package.json, но npm найдет транзитивную зависимость и использует ее.
Например, grunt-typescript
Модуль имеет зависимость от TypeScript, но модуль старый и устаревший - хотя он все еще работает. Это может привести к конфликту с tsc -p .
внутри сценария после установки.