我正在尝试导入包含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查找所包含的类型定义?
答案 0 :(得分:3)
您的tsconfig.json
使用"module": "es6"
。根据{{3}},这使编译器以classic
的方式查找模块。 classic
查找在某些情况下可用,但不支持通过packages.json定义的节点模块,对于flatpickr就是这种情况。
要对此进行更改,您需要进行更改,或者将tsconfig.json
设置为"moduleResolution": "node"
,或者使用"module": "commonjs"
,这会将发出的模块和解析机制都切换到节点。 js标准。
这两个选项都会导致您的TypeScript编译,因为它现在可以找到模块类型定义。
但是,由于TypeScript无法处理,因此您的项目现在可能无法在运行时加载模块。在这种情况下,您找不到解决方案,建议您打开一个新的问题,其中包含有关运行时的其他信息。