Taro 模板中的 baseUrl 弃用警告与 TypeScript 版本冲突

太阳作者太阳
原创内容采用 CC-4.0 协议发布,转载请注明出处

Taro 4.2.1 创建的项目里保留了 baseUrl。使用 TypeScript 6 打开后,VS Code 会提示这项配置已经弃用。看起来照提示加一行就行,结果命令行检查又报了另一个错。

原始问题

VS Code 一直提示:

选项“baseUrl”已弃用,并将在 TypeScript 7.0 中停止工作。
指定 compilerOption“ignoreDeprecations”:“6.0”以使此错误静音。

照提示加入下面的配置后,编辑器安静了:

"ignoreDeprecations": "6.0"

但项目命令随即报错:

tsconfig.json:3:26 - error TS5103: Invalid value for '--ignoreDeprecations'.

问题出在两个 TypeScript 版本上。VS Code 使用的版本认识 6.0,而 npm run check:types 调用的是项目安装的 TypeScript 5.8.3。编辑器给出的修复,命令行编译器不接受。

这个项目没有 typecheck 脚本,实际脚本名是 check:types

npm run check:types

npm run check 也会调用它,然后继续执行 lint 和 style 检查。

这个 baseUrl 从哪里来的

它不是业务代码后来加上的。Taro 4.2.1 的项目模板本身就包含:

"baseUrl": "."

所以,用新版 TypeScript 打开按这个模板创建的项目,就会直接看到弃用提示。VS Code 建议加入 ignoreDeprecations: "6.0",项目安装的旧版 TypeScript 又会拒绝它,来回折腾却没有解决 baseUrl 本身的问题。

实际处理

路径映射已经写成相对 tsconfig.json 的形式:

"paths": {
  "@/*": ["./src/*"]
}

这种写法不需要 baseUrl。最终直接删除 baseUrl,也不再用 ignoreDeprecations 压住提示。

删除 baseUrl 后实际执行:

npm run build:weapp

构建正常完成,路径别名和小程序构建都没有受到影响。

现在的判断

baseUrl 在这种配置里已经没有用途。与其保留它,再增加一项配置隐藏警告,不如直接删除。

如果别的 Taro 项目也遇到相同提示,先检查 paths 是否已经使用相对路径,再删除 baseUrl 并运行真实构建。不要只看 VS Code 是否安静,也不要只跑与项目版本不同的全局 TypeScript。

参考: