vite · 构建与类型
报错原文
Failed to resolve import "./utils" from "src/main.ts". Does the file exist?
这是什么意思
那个路径下什么也没找到,而它一起打印的 "Does the file exist?" 指向真正值得查的三件事:大小写、扩展名,以及 tsconfig 或 vite.config 里的别名。macOS 和 Windows 的文件系统不分大小写,所以写 ./Utils 在你机器上照样跑,直到在 Linux 的 CI 和部署上才第一次崩——这个错误是「我这儿明明是好的」最常见的真身。git ls-files src | grep -i utils 能看出仓库里实际存的是哪种拼写。若用的是 @/utils 这类别名,vite.config 的 resolve.alias 和 tsconfig 的 paths 必须一致;只改一处,编辑器安静了,构建照旧失败。
怎么修
git ls-files src | grep -i utils- 来自
- vite
- 构建与类型
- 10
构建阶段的错误是工具在运行之前就先拒绝了,所以它们出现的那一刻并不弄坏什么——但它们问你两个问题:你要把类型或路径改成和真实结构一致,还是用一个 as any、一条抑制注释让那一行过去?也正是在这里,那些只在你自己机器上成立的事情——大小写、扩展名、环境变量——第一次显形。
怎么读报错
- 从第一行往下读。越往下越是工具内部的事,起因通常写在最上面。
- 有文件名和行号就从那里查——不是栈顶那一帧,而是最上面那条提到你自己写的文件的行。
- 把报错原文照样去搜,但先去掉你自己的路径和变量名,正是那些让搜索匹配不上。
- 同一种情况在不同版本里措辞不同。结果不对头,就把版本号一起加进查询。
- 粘贴修法之前,先确认它会丢掉什么。这里面有些是不能撤回的。
常见问题
Q. “Failed to resolve import "./utils" from "src/main.ts". Does the file exist?” 是什么意思?
那个路径下什么也没找到,而它一起打印的 "Does the file exist?" 指向真正值得查的三件事:大小写、扩展名,以及 tsconfig 或 vite.config 里的别名。macOS 和 Windows 的文件系统不分大小写,所以写 ./Utils 在你机器上照样跑,直到在 Linux 的 CI 和部署上才第一次崩——这个错误是「我这儿明明是好的」最常见的真身。git ls-files src | grep -i utils 能看出仓库里实际存的是哪种拼写。若用的是 @/utils 这类别名,vite.config 的 resolve.alias 和 tsconfig 的 paths 必须一致;只改一处,编辑器安静了,构建照旧失败。
Q. 怎么修?
git ls-files src | grep -i utils —— 执行前先看上面的说明,确认这条命令会丢掉什么。
Q. 这是哪个工具报的?
vite。它属于构建与类型,报错原文有 11 个词。