VS Code 在执行自动导入后不包含 .js

Jus*_*ier 2 javascript node.js visual-studio-code

在 VS Code 中使用 NodeJS 时,我遇到了以下问题:VS Code 的自动导入功能不包含.jsNode 模块系统所需的扩展。

例如:

// As required by Node
import { foo } from './foo.js'

// As added by VS Code
import { foo } from './foo'
Run Code Online (Sandbox Code Playgroud)

当按照 VS Code 的指定保留时,我收到以下错误:

node:internal/process/esm_loader:91
    internalBinding('errors').triggerUncaughtException(
                              ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '\mbot\util\strings' imported from \mbot\index.js
Did you mean to import ../util/strings.js?
    at new NodeError (node:internal/errors:372:5)
    at finalizeResolution (node:internal/modules/esm/resolve:405:11)
    at moduleResolve (node:internal/modules/esm/resolve:966:10)
    at defaultResolve (node:internal/modules/esm/resolve:1176:11)
    at ESMLoader.resolve (node:internal/modules/esm/loader:605:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:318:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:80:40)
    at link (node:internal/modules/esm/module_job:78:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}
Run Code Online (Sandbox Code Playgroud)

Jus*_*ier 6

可以通过将jsconfig.json文件添加到项目根目录来解决此问题。具体来说,通过至少包含以下内容,我的项目开始自动导入.jsNodeJS 所需的文件扩展名。

jsconfig.json

{
  "compilerOptions": {
    "moduleResolution": "nodenext", // <- Necessary to get imports with .js
  },
  "exclude": ["node_modules"]
}
Run Code Online (Sandbox Code Playgroud)

注意: VS Code 会抱怨该nodenext值需要特殊包,但没有它也能正常工作。