TypeScript 找不到模块 flatpickr,即使它包含 typescript 类型
TypeScript can't find module flatpickr, even though it includes typescript types
我正在尝试导入一个包含 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 找到包含的类型定义?
您的 tsconfig.json
使用 "module": "es6"
。根据 compiler options definition,这会导致编译器以 classic
的方式查找模块。 classic
查找适用于某些场景,但不支持通过 packages.json 定义的节点模块,flatpickr 就是这种情况。
你需要改变的是将 tsconfig.json
设置为 "moduleResolution": "node"
或者使用 "module": "commonjs"
将发出的模块和解析机制切换为node.js 标准。
任一选项都会导致您的 TypeScript 编译,因为它现在可以找到模块类型定义。
但是,您的项目现在可能无法在 运行 时间内加载模块,因为 TypeScript 无法处理该问题。如果是这种情况并且您找不到解决方案,我建议您打开一个新问题,并提供有关 运行-time 的其他信息。
我正在尝试导入一个包含 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 找到包含的类型定义?
您的 tsconfig.json
使用 "module": "es6"
。根据 compiler options definition,这会导致编译器以 classic
的方式查找模块。 classic
查找适用于某些场景,但不支持通过 packages.json 定义的节点模块,flatpickr 就是这种情况。
你需要改变的是将 tsconfig.json
设置为 "moduleResolution": "node"
或者使用 "module": "commonjs"
将发出的模块和解析机制切换为node.js 标准。
任一选项都会导致您的 TypeScript 编译,因为它现在可以找到模块类型定义。
但是,您的项目现在可能无法在 运行 时间内加载模块,因为 TypeScript 无法处理该问题。如果是这种情况并且您找不到解决方案,我建议您打开一个新问题,并提供有关 运行-time 的其他信息。