我正在使用 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";
{
"workspaces": [
"packages/*"
]
}
{
"name": "@repo/types",
"types": "./index.ts",
"main": "./index.ts",
"sideEffects": false
}
3.确保您的根 tsconfig.json (位于 monorepo 根)包含路径配置:
{
"compilerOptions": {
"paths": {
"@repo/types": ["./packages/types"]
}
}
}
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@repo/types": ["../types"]
}
}
}
root/
├── packages/
│ ├── types/
│ │ ├── index.ts
│ │ ├── package.json
│ │ └── tsconfig.json
│ └── web/
│ ├── package.json
│ └── tsconfig.json
├── package.json
└── tsconfig.json