我有一个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找不到它呢?
我怎么知道它试图在哪里寻找模块?或者任何其他可以帮助开发人员找出如何修复这个问题的信息。
1条答案
按热度按时间nsc4cvqm1#
开发人员通常不会使用工具来解决这类问题,而是了解他们的包管理器如何存储和加载包。
例如,如果您正在使用
yarn
及其Plug'n'Play功能(检查package.json
所在的项目根目录中是否有.pnp.cjs
文件),则运行:将在节点的模块加载中包含即插即用功能(详情请参考上面的链接),并允许解析包。当编译类型脚本代码时,
tsc
编译器也必须在yarn
下运行,以允许解析模块,如果tsc
作为package.json
的脚本运行,则会隐式发生这种情况。