tsc · 构建与类型
报错原文
error TS2307: Cannot find module 'lodash' or its corresponding type declarations.
这是什么意思
tsc 既没找到那个模块本身,也没找到它的类型声明,而这条消息同时说了两件事,这一点很关键——可能包压根没装,也可能装了但它不带类型。如果确实装了,那缺的就是类型:npm i -D @types/lodash 装上配套的类型包;不过如今很多包自带类型,根本没有对应的 @types。如果这个错出现在相对路径的 import 上,就去看大小写和 tsconfig 里的 paths——指向你自己文件的路径和 @types 毫无关系。
怎么修
npm i -D @types/lodash- 来自
- tsc
- 构建与类型
- 10
构建阶段的错误是工具在运行之前就先拒绝了,所以它们出现的那一刻并不弄坏什么——但它们问你两个问题:你要把类型或路径改成和真实结构一致,还是用一个 as any、一条抑制注释让那一行过去?也正是在这里,那些只在你自己机器上成立的事情——大小写、扩展名、环境变量——第一次显形。
怎么读报错
- 从第一行往下读。越往下越是工具内部的事,起因通常写在最上面。
- 有文件名和行号就从那里查——不是栈顶那一帧,而是最上面那条提到你自己写的文件的行。
- 把报错原文照样去搜,但先去掉你自己的路径和变量名,正是那些让搜索匹配不上。
- 同一种情况在不同版本里措辞不同。结果不对头,就把版本号一起加进查询。
- 粘贴修法之前,先确认它会丢掉什么。这里面有些是不能撤回的。
常见问题
Q. “error TS2307: Cannot find module 'lodash' or its corresponding type declarations.” 是什么意思?
tsc 既没找到那个模块本身,也没找到它的类型声明,而这条消息同时说了两件事,这一点很关键——可能包压根没装,也可能装了但它不带类型。如果确实装了,那缺的就是类型:npm i -D @types/lodash 装上配套的类型包;不过如今很多包自带类型,根本没有对应的 @types。如果这个错出现在相对路径的 import 上,就去看大小写和 tsconfig 里的 paths——指向你自己文件的路径和 @types 毫无关系。
Q. 怎么修?
npm i -D @types/lodash —— 执行前先看上面的说明,确认这条命令会丢掉什么。
Q. 这是哪个工具报的?
tsc。它属于构建与类型,报错原文有 11 个词。
相关报错
error TS2339: Property 'user' does not exist on type 'Request'.tscError [ERR_MODULE_NOT_FOUND]: Cannot find module '/app/src/util' imported from /app/src/index.jsnodeerror TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.tscerror TS18048: 'user' is possibly 'undefined'.tsc 4.9+error TS7006: Parameter 'req' implicitly has an 'any' type.tscParsing error: Unexpected tokeneslintYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file.webpackFailed to resolve import "./utils" from "src/main.ts". Does the file exist?vite