You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TypeScript项目引用时出现模块找不到错误求助

解决方案

1. 补全Common项目的TypeScript配置

你没提供common项目的tsconfig.json,但项目引用(Project References)要求被引用的项目必须开启复合模式,这是核心前提。在common根目录创建tsconfig.json,配置如下:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "Node16",
    "rootDir": "src",
    "outDir": "dist",
    "composite": true, // 必须开启,标记为可被其他项目引用的复合项目
    "declaration": true, // 生成类型声明文件,方便服务端识别类型
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"]
}

注意:把common的所有代码移到src目录下,比如dungeonUtils.ts要放在common/src/里。

2. 修正服务端的模块导入路径

先确认你的目录结构:如果根目录下是server、client、common三个文件夹,服务端代码在server/src/下,那导入common模块的相对路径要对应正确的位置。
比如服务端src/main.ts里的导入:

// 错误示例:../../common/dungeonUtils
// 正确示例(对应common/src/dungeonUtils.ts)
import { createDungeon } from "../../common/src/dungeonUtils";

嫌相对路径麻烦的话,也可以给服务端tsconfig.json加paths配置简化导入:

{
  "compilerOptions": {
    // ... 原有配置
    "baseUrl": ".",
    "paths": {
      "@common/*": ["../common/src/*"]
    }
  },
  // ... 原有配置
}

之后就能用简洁路径导入:

import { createDungeon } from "@common/dungeonUtils";

3. 调整编译脚本确保依赖优先编译

服务端的tsc --build会自动处理项目引用,但要确保common先被编译。修改服务端package.json的脚本:

"scripts": {
  "start": "npm run dev",
  "dev": "npm run tsc && npm-run-all --parallel dev:*",
  "dev:tsc": "tsc --watch ../common ./",
  "dev:nodemon": "nodemon dist/server.js",
  "tsc": "tsc --build ../common ./"
},

这样编译时会先处理common项目,再编译服务端。

4. 适配Node16模块解析规则

服务端用了module: Node16,需要注意两点:

  • 在common的package.json里添加"type": "commonjs"(默认)或"type": "module",确保模块格式和服务端一致;
  • 如果直接导入common编译后的文件,必须带扩展名,比如:
    import { createDungeon } from "../../common/dist/dungeonUtils.js";
    
    用项目引用导入src目录文件的话,TypeScript会自动处理编译后的路径,优先用这种方式。

5. 验证编译结果

执行npm run tsc后检查:

  • common目录下生成了dist文件夹,包含编译后的.js和.d.ts文件;
  • server的dist文件夹里,模块引用路径没有错误。

内容的提问来源于stack exchange,提问作者wietze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 18:15:35