当'--moduleResolution'为'node 16'或'nodenext'时,EcmaScript导入中的相对导入路径需要显式文件扩展名,你是说'./*.js'吗

s71maibg  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(787)

在package.json中,我有"type": "module",我使用SWC编译typescript代码。在进行导入时,我使用import Example from './example',然后使用"start": "node --es-module-specifier-resolution=node lib/index.js"作为脚本,这样就不必指定扩展名。这允许我使用SWC进行编译,而不需要指定扩展名,这很神奇,否则我必须在typescript中指定.js扩展名,以便编译到不同的/lib目录。
然而,当在代码库上运行tsc --emitDeclrationOnly时,当我在tsconfig.json中有"moduleResolution": "nodenext"时,它会出现上面的错误。它告诉我nodenext或node 16强制执行文件扩展名。这是非常烦人的,并且有点难以使用nodenext或node 16。这样做有什么原因吗?或者我错过了一些东西,可以让我轻松地告诉typescript如何自行解析扩展?

vyswwuz2

vyswwuz21#

在这里看到Slebetman的回答:https://stackoverflow.com/a/65874173/132510。尝试在import语句中将'.js'追加到文件名后,或者将其设置为绝对导入。

相关问题