【问题标题】:"Cannot find module" when using tsc to compile TypeScript using esm使用 tsc 使用 esm 编译 TypeScript 时出现“找不到模块”
【发布时间】:2021-03-20 09:04:43
【问题描述】:

我有一个像这样的 esm package.json

{
  "main": "config.js",
  "type": "module",
  "scripts": {
    "start": "npm run build && node ./build/config.js",
    "build": "tsc",
    ...

还有一个tsconfig.json

{
  "compilerOptions": {
    "target": "ES2015",
    "module": "ES2020",
    "strict": true,
    "esModuleInterop": true,
    "moduleResolution": "node",
    "forceConsistentCasingInFileNames": true,
    "outDir": "./build"
  },
  "include": ["./src", "config.ts"],
  "exclude": ["./*/**.spec.js"]
}

运行npm run start 时出现以下错误:

> tsc

internal/modules/run_main.js:54
    internalBinding('errors').triggerUncaughtException(
                              ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'F:\Development\test\example\build\src\handlers\index' imported from F:\Development\test\example\build\config.js
    at finalizeResolution (internal/modules/esm/resolve.js:277:11)
    at moduleResolve (internal/modules/esm/resolve.js:658:10)
    at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:748:11)
    at Loader.resolve (internal/modules/esm/loader.js:97:40)
    at Loader.getModuleJob (internal/modules/esm/loader.js:243:28)
    at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:42:40)
    at link (internal/modules/esm/module_job.js:41:36) {
  code: 'ERR_MODULE_NOT_FOUND'

构建目录如下所示:

我已经尝试将类型更改为 commonjs 和其他配置更改,我做错了什么?

【问题讨论】:

    标签: node.js typescript node-modules


    【解决方案1】:

    显然,即使您使用的是 typescript,我们也需要将导入更改为 .js,因此在我的示例中:

    import IndexHandler from "./src/handlers/index";
    变为:
    import IndexHandler from "./src/handlers/index.js";

    它不被视为错误,而是 TypeScript 的一部分。

    【讨论】:

      猜你喜欢
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 2018-11-08
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      相关资源
      最近更新 更多