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

Lerna共享包Typescript导入需后缀/src的问题该如何修复?

这个问题和lerna配置无关,是你的myShared包的package.json缺少正确的入口配置,按照以下步骤修复即可:

修复步骤

1. 配置shared包的package.json入口字段

找到packages/shared/package.json文件,添加/修改入口相关字段:

  • main:对应CommonJS规范的入口文件路径
  • module:对应ES Module规范的入口文件路径
  • types:对应TypeScript类型声明的入口路径

如果你的项目是提前把TS编译到dist目录再发布使用,配置示例如下:

{
  "name": "myShared",
  "version": "1.0.0",
  "main": "dist/index.js",
  "module": "dist/index.esm.js",
  "types": "dist/index.d.ts",
  // 其余原有配置保持不变
}

如果你的monorepo内是直接引用TS源码不做提前编译,直接指向源码入口即可:

{
  "name": "myShared",
  "version": "1.0.0",
  "main": "src/index.ts",
  "types": "src/index.ts"
}

2. (可选)配置exports字段限制导出范围

如果你使用的是TS 4.7及以上版本,可以额外添加exports字段明确导出规则,避免其他包意外引用shared包的内部路径:

{
  "exports": {
    ".": {
      "types": "./src/index.ts",
      "import": "./src/index.ts",
      "require": "./src/index.ts"
    }
  }
}

3. 检查shared包的tsconfig配置

确保packages/shared/tsconfig.json中开启了declaration配置项,这样编译时会自动生成类型声明文件,其他包导入时才能正确识别类型:

{
  "compilerOptions": {
    "declaration": true,
    "outDir": "./dist",
    // 其余原有配置保持不变
  }
}

4. 刷新依赖验证配置

修改完成后重新执行lerna bootstrap或者对应包管理器的workspace依赖安装命令(比如pnpm install)刷新软链接,之后就可以直接通过import {GreatClass} from "myShared";完成导入。

常见问题排查
  • 入口路径要精确到具体的index文件,不要只写到src/层级
  • 如果你的monorepo使用了workspace协议,确保usesShared包的依赖中myShared的版本写法正确,比如pnpm下是"myShared": "workspace:*"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:24:08