TypeScript не может найти модуль flatpickr, даже если он включает типы машинописи - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь импортировать модуль, который содержит определения TypeScript.Установка @ types / flatpickr даже предупреждает, что устанавливать ее не нужно.

Кажется, что tsc не берет файлы * .d.ts установленного пакета, а затем просто игнорирует весьпакет.

Я создал простой проект JS, который показывает проблему: https://github.com/Strayer/typescript-import-flatpickr-issue

Сообщение об ошибке, сообщаемое tsc:

test.ts:1:23 - error TS2307: Cannot find module 'flatpickr'.

1 import flatpickr from "flatpickr";

                        ~~~~~~~~~~~

Сами типы могут бытьнаходится в node_modules/flatpickr/dist/types после установки зависимостей.

Что мне нужно сделать, чтобы помочь TypeScript найти включенные определения типов?

1 Ответ

0 голосов
/ 03 февраля 2019

Ваш tsconfig.json использует "module": "es6".Согласно определению опций компилятора , это заставляет компилятор искать модули classic.Поиск classic работает для некоторых сценариев, но не поддерживает модули узлов, определенные с помощью package.json, как в случае flatpickr.

Что нужно изменить, чтобы это работало для вас, либо установите *От 1009 * до "moduleResolution": "node" или, возможно, используйте "module": "commonjs", который переключит как выпущенные модули, так и механизм разрешения на стандарты node.js.

Любая опция заставит ваш TypeScript скомпилироваться, поскольку теперь он может найти тип модуля.определения.

Однако возможно, что ваш проект теперь не сможет загрузить модуль во время выполнения, поскольку TypeScript не справится с этим.Если это так, и вы не можете найти решение, я предлагаю открыть новый вопрос с дополнительной информацией о времени выполнения.

...