使用TypeScript项目引用时出现ERR_MODULE_NOT_FOUND错误
TypeScript项目引用+路径别名运行时模块找不到问题
尝试通过TypeScript项目引用功能,实现在应用服务中导入公共包database_models的代码,但运行时抛出模块找不到错误。
共享包database_models的tsconfig.json配置
{ "extends": "@tsconfig/node-lts/tsconfig.json", "include": ["src"], "compilerOptions": { "module": "NodeNext", "declaration": true, "outDir": "./dist", "declarationDir": "./types", "strict": true, "composite": true } }
主包的tsconfig.json配置
{ "extends": "@tsconfig/node-lts/tsconfig.json", "include": ["src"], "references": [ { "path": "../../lib/database_models" } ], "compilerOptions": { "module": "NodeNext", "declaration": true, "outDir": "./dist", "declarationDir": "./types", "strict": true, "paths": { "@database_models/*": ["../../lib/database_models/src/*"] } } }
导入代码
import UsersModel from "@database_models/UsersModel.js";
运行时错误信息
node:internal/modules/esm/resolve:854 throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); ^ Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@database_models/UsersModel.js' imported from C:\Users\jpedr\Documents\Workshop\Work\twitter-engage-bot\apps\api\dist\managers\DatabaseManager.js at packageResolve (node:internal/modules/esm/resolve:854:9) at moduleResolve (node:internal/modules/esm/resolve:927:18) at defaultResolve (node:internal/modules/esm/resolve:1157:11) at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:383:12) at ModuleLoader.resolve (node:internal/modules/esm/loader:352:25) at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:227:38) at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:87:39) at link (node:internal/modules/esm/module_job:86:36) { code: 'ERR_MODULE_NOT_FOUND' } Node.js v20.15.0
已确认事项
- 主包
tsconfig.json中的paths路径指向正确 - 共享包设置
composite: true后已重新构建 - 使用
tsc --build命令构建主包
内容的提问来源于stack exchange,提问作者Viriato
相关产品推荐
相关产品推荐

