Другая версия 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 . внутри сценария после установки.

Другие вопросы по тегам