在配置文件里配好别名让它指向源码目录,编辑器里跳转一切正常,跑 tsc 编译却报 Cannot find module ‘@/utils/date’ or its corresponding type declarations,把路径改成相对写法才能过。日志里能对上时间点,这种反而好排。

别名只影响类型解析,不会改写运行时代码;基础路径没配或者覆盖范围没包含别名目录时,编译器还是按相对路径去找文件,自然找不到。这一点先确认清楚,后面就不用反复试。

# tsconfig.json
baseUrl: '.'
paths: { '@/*': ['src/*'] }
# 运行时要另外挂 tsconfig-paths/register

「tsconfig paths 别名」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

处理上按这个顺序:补上基础路径,再确认别名写在编译选项里面;检查包含范围配置有没有覆盖别名指向的目录;运行时另外挂一个路径解析插件来把别名还原。

结果对不对很好判断,改完 tsc 不再报找不到模块,编辑器跳转也能落到源码,两边解析结果一致。

作者 9823189