pnpm monorepo ts 项目互相引用 scope 包,找不到模块?

作者站长头像
站长
· 阅读数 5

是这样的,我在一个仓库中创建了 pnpm monorepo:

packages:
  - 'packages/*'
  - 'pages'

我在 packages/hagao/ 目录创建了一个 ts 工程,是一个很简单的库:

packages/hagao:
  - src/index.ts
  package.json

这个工程只导出了一个 aaa 变量用于测试:

// packages/hagao/src/index.ts
export const aaa = 1

这个 hagao 包的名称是:

{
  "name": "@jamcaalaa/hagao"
}

然后我在 pages 下创建了一个 Vue3 Vite Ts 工程,包名称叫 page,用于做个 SPA 页面,并把 @jamcaalaa/hagao 安装至此:

# repo 根目录
pnpm add @jamcaalaa/hagao --filter page

但是在 page 项目中导入 aaa 变量会报错,找不到模块:

pnpm monorepo ts 项目互相引用 scope 包,找不到模块?

我发现一个兄弟也这么干过:github.com/kongweigen/pg-kit,但是他的组件包并不是 scope 包,即名称不是 @ 起头的,我也尝试过,的确没问题,我的是有 scope 的就一直报错。

我在 Google 上找答案,找到一个折衷的办法,就是在 page 包的 tsconfig.json 中声明 path,于是就能正常提示了:

pnpm monorepo ts 项目互相引用 scope 包,找不到模块?

但是我观察到 vuejs 的 packages 并不需要这样声明 path 也可以用,我不知道是哪里出了差错,是不是两个 package 的 typescript 不通用的原因?

回复
1个回答
avatar
test
2024-07-05

已通过添加 scope 包的 package.json exports 字段解决

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容