debugging 如何调试Javascript中的“找不到模块”错误?MODULE_NOT_FOUND

sxissh06  于 2022-11-14  发布在  Java
关注(0)|答案(1)|浏览(215)

我有一个Typescript项目,其tsconfig.json文件当前如下所示:

{
  "compilerOptions": {
    "module": "commonjs",
    "moduleResolution": "node",
    "target": "es2020",
    "baseUrl": "src",
    "outDir": "dist",
    "declaration": false,
    "sourceMap": true,
    "esModuleInterop": true,
    "newLine": "lf",
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "strictNullChecks": true,
    "importsNotUsedAsValues": "error",
    "isolatedModules": true,
    "skipLibCheck": true,
    "noFallthroughCasesInSwitch": true,
    "noImplicitAny": true,
    "noImplicitReturns": true,
    "noUncheckedIndexedAccess": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "preserveConstEnums": true
  },
  "include": ["src"]
}

当我用tsc构建我的项目时没有出现任何问题。但是当我用node dist/server/index.js运行它时,我得到了类似Cannot find module 'server/foo/bar' MODULE_NOT_FOUND的错误。
开发人员有什么工具来调试它?
TypeScript可以在transpilation期间找到模块,否则它会失败。为什么JavaScript找不到它呢?
我怎么知道它试图在哪里寻找模块?或者任何其他可以帮助开发人员找出如何修复这个问题的信息。

nsc4cvqm

nsc4cvqm1#

开发人员通常不会使用工具来解决这类问题,而是了解他们的包管理器如何存储和加载包。
例如,如果您正在使用yarn及其Plug'n'Play功能(检查package.json所在的项目根目录中是否有.pnp.cjs文件),则运行:

yarn node dist/server/index.js

将在节点的模块加载中包含即插即用功能(详情请参考上面的链接),并允许解析包。当编译类型脚本代码时,tsc编译器也必须在yarn下运行,以允许解析模块,如果tsc作为package.json的脚本运行,则会隐式发生这种情况。

相关问题