turborepo 包中出现意外的导入错误

问题描述 投票:0回答:1

我正在使用 TurboRepo 开发我的第一个演示项目。计划是创建一个名为

types
的内部包,它将与 UI 和服务器共享类型。我按照以下步骤创建了
types
包:

  • types
     中创建了一个名为 
    packages
  • 的目录
  • 创建了一个包含以下内容的
    package.json
    文件:
{
  "name": "@repo/types",
  "type": "module",
  "private": true,
  "exports": {
    ".": "./index.ts"
  },
  "version": "1.0.0",
  "main": "./index.ts",
  "types": "./index.ts",
  "files": [
    "./index.ts"
  ],
  "scripts": {
    "dev": "tsc --watch"
  },
  "devDependencies": {
    "@types/node": "^20.8.10",
    "body-parser": "^1.20.2",
    "esbuild": "^0.19.5",
    "tsx": "^3.14.0",
    "typescript": "^5.5.4",
    "@repo/typescript-config": "workspace:*"
  },
  "dependencies": {
    "zod": "^3.22.4"
  }
}
  • 创建了
    tsconfig.json
    文件:
{
  "$schema": "https://json.schemastore.org/tsconfig",
  "extends": "../typescript-config/nextjs.json",
  "compilerOptions": {
    "outDir": "dist"
  },
  "include": [
    "**/*.ts"
  ],
  "exclude": [
    "node_modules"
  ]
}

如果我在扩展中使用

"extends": "@repo/typescript-config/nextjs.json",
,那么它会抛出错误,所以我使用了相对路径。

  • packages/types/types/abc.ts
    文件中添加了一些类型。我还在
    packages/types/
    创建了一个 index.ts 文件以导出文件中的所有内容。

现在的问题是,当我从包中导入类型时,TS 会抛出一个错误:

typescript: Cannot find module '@repo/types' or its corresponding type declarations. [2307]

应用程序按预期工作,但我无法修复此 TS 错误。我不确定我在这里缺少什么。你能引导我走向正确的方向吗?

TS 不应显示 2307 错误。

我在

types
应用程序中添加了
web
包,如下所示:

"@repo/types": "workspace:*",

并像这样导入类型:

import type { InventoryItem } from "@repo/types";
javascript reactjs typescript next.js turborepo
1个回答
0
投票
  1. 确保您的根 package.json 包含工作区配置:

{
  "workspaces": [
    "packages/*"
  ]
}

  1. 在您的 types 包中,尝试将 "type": "module" 添加到您的 package.json 并确保您具有以下字段:

{
  "name": "@repo/types",
  "types": "./index.ts",
  "main": "./index.ts",
  "sideEffects": false
}

3.确保您的根 tsconfig.json (位于 monorepo 根)包含路径配置:

{
  "compilerOptions": {
    "paths": {
      "@repo/types": ["./packages/types"]
    }
  }
}

  1. 在您的网络应用程序的 tsconfig.json 中,确保您有:

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@repo/types": ["../types"]
    }
  }
}

  1. 此外,验证您的项目结构是否遵循以下模式:

root/
  ├── packages/
  │   ├── types/
  │   │   ├── index.ts
  │   │   ├── package.json
  │   │   └── tsconfig.json
  │   └── web/
  │       ├── package.json
  │       └── tsconfig.json
  ├── package.json
  └── tsconfig.json

© www.soinside.com 2019 - 2024. All rights reserved.