ts c не распознает параметр '--init' - PullRequest
1 голос
/ 29 мая 2020

По какой-то причине npx tsc --init выводит следующую ошибку:

$ npx tsc --init
npx: installed 1 in 1.467s
error TS5023: Unknown compiler option 'init'.

Я установил пакет typescript с Yarn 2 :

$ yarn add -D typescript
➤ YN0000: ┌ Resolution step
➤ YN0000: └ Completed in 0.31s
➤ YN0000: ┌ Fetch step
➤ YN0013: │ typescript@npm:3.9.3 can't be found in the cache and will be fetched from the remote registry
➤ YN0013: │ typescript@patch:typescript@npm%3A3.9.3#builtin<compat/typescript>::version=3.9.3&hash=8cac75 can't be found in the cache and will be fetched from the disk
➤ YN0000: └ Completed in 1.46s
➤ YN0000: ┌ Link step
➤ YN0000: └ Completed
➤ YN0000: Done in 1.95s

Может кто-нибудь объяснить мне, почему tsc не распознает --init и что я делаю не так?


ОБНОВЛЕНИЕ :

Как выяснил Даниэль , проблема в том, что npx не находит или не распознает пакет typescript, установленный с Yarn 2 . Решением было использовать вместо yarn: yarn tsc --init

1 Ответ

3 голосов
/ 29 мая 2020

Судя по выводам команды npx tsc --init, похоже, что пакет typescript не установлен в каталоге, в котором вы запустили команду. npx пытается быть полезным, устанавливая любые пакеты, необходимые для запуска команды.

Несмотря на то, что он пытался быть полезным, в конечном итоге не установил пакет, который можно было бы ожидать в 2020 году. Если вы запустите $ npx tsc -v вы, скорее всего, получите следующий результат:

$ npx tsc -v
npx: installed 1 in 1.098s
message TS6029: Version 1.5.3

Однако если бы у вас был установлен пакет typescript, вы бы получили это, вместо этого:

$ npx tsc -v
Version 3.9.3

Как вы Как видите, версия, установленная npm, отличается. Это потому, что npx закончил установку пакета tsc , а не typescript. Пакет tsc также предоставляет команду tsc. npx выбрал его вместо typescript, потому что, хотя оба пакета предоставляют команду tsc, он также называется tsc. npx подумал, что это подходит лучше.

ОБНОВЛЕНИЕ:

Пряжа 2 представляет функцию Plug'n'Play. Зависимости устанавливаются совсем не так, как раньше в Yarn 1 и npm.

Yarn 1 и npm помещают код для ваших пакетов в каталог node_modules в каждом отдельном проекте. npx ищет там команды.

Yarn 2, с другой стороны, устанавливает код пакета в совместно используемое место и помещает в ваш проект единственный файл .pnp.js, который выполняет сопоставление. Если вы устанавливаете пакет для одного проекта, вам не придется загружать его снова, если вы используете его в другом проекте.

Однако любые инструменты, которые зависели от node_modules, будут повреждены. Вот почему npx не удалось найти typescript в вашем проекте. npx не знает о Plug'n'Play.

Подробнее об этой функции можно прочитать здесь: https://yarnpkg.com/features/pnp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...