尽管TypeScript包含打字稿类型,但TypeScript找不到模块flatpickr

时间:2018-12-21 12:51:30

标签: typescript flatpickr

我正在尝试导入包含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 :(得分:3)

您的tsconfig.json使用"module": "es6"。根据{{​​3}},这使编译器以classic的方式查找模块。 classic查找在某些情况下可用,但不支持通过packages.json定义的节点模块,对于flatpickr就是这种情况。

要对此进行更改,您需要进行更改,或者将tsconfig.json设置为"moduleResolution": "node",或者使用"module": "commonjs",这会将发出的模块和解析机制都切换到节点。 js标准。

这两个选项都会导致您的TypeScript编译,因为它现在可以找到模块类型定义。

但是,由于TypeScript无法处理,因此您的项目现在可能无法在运行时加载模块。在这种情况下,您找不到解决方案,建议您打开一个新的问题,其中包含有关运行时的其他信息。