反对楼上回答。
你原来的配置里 "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#L4168
Option '--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 的路径:
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容