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

Vite构建的TS库出现TS2307模块查找错误求助

解决TS2307: 找不到模块'coanda-sdk-ts/myModule'或类型声明的问题

核心问题分析

问题根源在于Vite打包配置与package.json的exports字段不匹配,多入口打包生成了不符合预期的文件结构,导致TypeScript无法解析子模块的类型路径;同时src目录下意外生成的打包文件也会干扰模块解析。

具体修复步骤

1. 修正Vite配置,生成正确的子模块文件结构

修改vite.config.js,调整多入口的输出规则,确保文件路径与package.json声明的exports路径一致:

const path = require('path');
const { defineConfig } = require('vite');

module.exports = defineConfig({
  resolve: {},
  build: {
    lib: {
      entry: {
        index: path.resolve(__dirname, 'src/index.ts'),
        api: path.resolve(__dirname, 'src/api/index.ts'),
        computation: path.resolve(__dirname, 'src/computation/index.ts'),
        init: path.resolve(__dirname, 'src/init.ts')
      },
      name: 'coanda-sdk-ts',
      // 按入口名称生成对应路径的文件
      fileName: (format, entryName) => {
        if (entryName === 'index') {
          return `coanda-sdk-ts.${format}.js`;
        }
        return `${entryName}/index.${format}.js`;
      },
    },
    rollupOptions: {
      // 排除外部依赖(避免打包axios)
      external: ['axios'],
      output: {
        globals: {
          axios: 'axios'
        }
      }
    },
  },
});

2. 同步package.json的exports字段

更新package.json中的exports,确保每个子模块的JS文件路径对应Vite生成的输出,同时保持类型路径正确:

{
  "name": "coanda-sdk-ts",
  "version": "1.0.0",
  "files": ["dist"],
  "main": "./dist/coanda-sdk-ts.cjs.js",
  "module": "./dist/coanda-sdk-ts.es.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "import": "./dist/coanda-sdk-ts.es.js",
      "require": "./dist/coanda-sdk-ts.cjs.js",
      "types": "./dist/index.d.ts"
    },
    "./api": {
      "import": "./dist/api/index.es.js",
      "require": "./dist/api/index.cjs.js",
      "types": "./dist/api/index.d.ts"
    },
    "./computation": {
      "import": "./dist/computation/index.es.js",
      "require": "./dist/computation/index.cjs.js",
      "types": "./dist/computation/index.d.ts"
    },
    "./init": {
      "import": "./dist/init/index.es.js",
      "require": "./dist/init/index.cjs.js",
      "types": "./dist/init.d.ts"
    }
  },
  // 其他配置保持不变
}

3. 清理无效文件,消除解析干扰

删除src目录下意外生成的打包文件:

src/coanda-sdk-ts.cjs.js
src/coanda-sdk-ts.cjs2.js
src/coanda-sdk-ts.cjs3.js
src/coanda-sdk-ts.es.js
src/coanda-sdk-ts.es2.js
src/coanda-sdk-ts.es3.js

4. 重新构建并验证

执行构建命令:

npm run build

构建完成后检查dist目录,应生成如下结构:

  • dist/coanda-sdk-ts.cjs.js
  • dist/coanda-sdk-ts.es.js
  • dist/index.d.ts
  • dist/api/index.cjs.js | dist/api/index.es.js | dist/api/index.d.ts
  • dist/computation/index.cjs.js | dist/computation/index.es.js | dist/computation/index.d.ts
  • dist/init/index.cjs.js | dist/init/index.es.js | dist/init/index.d.ts

此时消费应用中使用import { SomeAPIFunction } from 'coanda-sdk-ts/api';将不再出现TS2307错误,类型提示也能正常工作。

额外验证点

  • 确认tsconfig.json中declaration: true已开启,outDir设置为./dist,确保tsc正确生成所有子模块的类型声明文件。
  • 消费应用安装库时,使用重新构建后的.tgz文件;本地开发时重新执行npm link同步更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:58:24