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

TurboRepo+AdonisJS跨应用共享类型时出现模块未找到错误

解决TurboRepo中AdonisJS无法解析共享类型包的问题

针对你的问题,核心原因是AdonisJS的模块解析机制与前端(React)不同,仅修改tsconfig.json不足以让AdonisJS识别TurboRepo中的共享包。以下是具体解决步骤:

1. 配置AdonisJS的路径别名(关键步骤)

AdonisJS v6使用esbuild作为默认构建工具,它不会自动读取tsconfig.json中的paths配置,需要在项目根目录的adonisrc.ts中手动添加别名:

import { defineConfig } from '@adonisjs/core/app'

export default defineConfig({
  appKey: env.get('APP_KEY'),
  http: {
    cookie: {},
    trustProxy: false,
  },
  // 添加别名配置
  aliases: {
    '@': 'src',
    '@repo/type': '../type/src/index.ts' // 指向共享类型包的入口文件
  }
})

2. 调整TypeScript配置

修改AdonisJS项目的tsconfig.json,确保TypeScript能正确解析共享包:

{
  "extends": "@adonisjs/tsconfig/tsconfig.app.json",
  "compilerOptions": {
    "rootDir": "./src",
    "outDir": "./build",
    "paths": {
      "@/*": ["./src/*"],
      "@repo/type": ["../type/src/index.ts"] // 同步添加paths映射
    },
    "moduleResolution": "NodeNext", // 适配TurboRepo的workspace模块解析
    "module": "NodeNext",
    "target": "ES2022"
  },
  "include": ["src/**/*", "../type/src/**/*"], // 确保共享类型被TypeScript检测到
  "exclude": ["node_modules", "build"]
}

3. 确认共享类型包的配置

检查packages/type/package.json,确保正确配置导出和类型声明:

{
  "name": "@repo/type",
  "version": "0.0.0",
  "private": true,
  "exports": {
    ".": "./src/index.ts"
  },
  "types": "./src/index.ts" // 明确指定类型入口
}

4. 清除缓存并重启服务

执行以下命令清除缓存,确保新配置生效:

rm -rf node_modules/.cache
node ace serve --watch

完成以上步骤后,AdonisJS应该能正常导入@repo/type中的类型和常量了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:57:13