反对楼上回答。你原来的配置里 "moduleResolution": "bundler" 是没问题的,不需要改。它本来就是兼容 "moduleResolution": "node" 的。你这么改虽然能解决图中的报错问题,但就完全改变了 moduleResolution 的意图了。题主要是觉得改了就改了,反正用不上 bundler 的特性,那就可以忽略我下面的回答。如果题主既想保留 bundler 特性、还要解决图中的报错,那就得想办法找到真实原因,不能这么头痛医头脚痛医脚。首先为啥我在评论区里问题主 TS 版本,因为 bundler 这个配置项是 TS 5.0 之后才加入的。并且此时 TS 对于图中这种情况的错误提示信息已经改为了:REF: https://github.com/microsoft/TypeScript/blob/v5.0-rc/src/compiler/diagnosticMessages.json#L4168Option '--resolveJsonModule' cannot be specified when 'moduleResolution' is set to 'classic'.注意加粗的部分,说的是只要不为 classic 就可以了。可图里的分明写的是 ...without 'node' module resolution strategy,要求必须为 node,显然是没有识别 bundler 这个配置项。但这个问题只能出现在低版本的 TS 上,而题主又说自己用的是 v5.1.6,所以问题就很奇怪。只能猜测题主此时项目里依赖的并非项目 node_modules 里安装的高版本的 TS,而是不知道在哪全局安装过的一个低版本的 TS。这种情况下如果用的是 VSCode,可以尝试在 settings.json 里强制指定一下 TS 的路径:
反对楼上回答。
你原来的配置里
"moduleResolution": "bundler"
是没问题的,不需要改。它本来就是兼容"moduleResolution": "node"
的。你这么改虽然能解决图中的报错问题,但就完全改变了 moduleResolution 的意图了。题主要是觉得改了就改了,反正用不上 bundler 的特性,那就可以忽略我下面的回答。如果题主既想保留 bundler 特性、还要解决图中的报错,那就得想办法找到真实原因,不能这么头痛医头脚痛医脚。
首先为啥我在评论区里问题主 TS 版本,因为 bundler 这个配置项是 TS 5.0 之后才加入的。并且此时 TS 对于图中这种情况的错误提示信息已经改为了:
注意加粗的部分,说的是只要不为 classic 就可以了。可图里的分明写的是 ...without 'node' module resolution strategy,要求必须为 node,显然是没有识别 bundler 这个配置项。
但这个问题只能出现在低版本的 TS 上,而题主又说自己用的是 v5.1.6,所以问题就很奇怪。
只能猜测题主此时项目里依赖的并非项目 node_modules 里安装的高版本的 TS,而是不知道在哪全局安装过的一个低版本的 TS。
这种情况下如果用的是 VSCode,可以尝试在 settings.json 里强制指定一下 TS 的路径: