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

从TypeScript导出JS文件遇阻?NX React库Vite打包导出报错求助

解决NX React+Vite库中JS模块导出的TS类型报错问题

问题分析

你遇到的错误核心是TypeScript无法自动识别JavaScript模块的类型,即便手动添加了.d.ts声明文件,也可能因为文件写法、配置或导入方式不匹配导致无法生效。

具体修复步骤

1. 修正类型声明文件(utils.d.ts)的写法

确保utils.d.ts和utils.js在同一目录下,且声明内容与JS文件的导出方式完全对应:

  • 若utils.js是ES模块导出:
    // utils.js
    export function calculateSum(a, b) {
      return a + b;
    }
    
    对应的utils.d.ts需写为:
    // utils.d.ts
    export declare function calculateSum(a: number, b: number): number;
    
  • 若utils.js是CommonJS导出:
    // utils.js
    module.exports = {
      calculateSum: (a, b) => a + b
    }
    
    对应的utils.d.ts要改为:
    // utils.d.ts
    declare module './utils' {
      export function calculateSum(a: number, b: number): number;
    }
    

2. 调整库的TS配置文件(tsconfig.lib.json)

打开libs/fuse/tsconfig.lib.json,确保以下配置正确:

{
  "compilerOptions": {
    "allowJs": true, // 允许混合JS和TS文件
    "declaration": true, // 生成类型声明文件
    "declarationMap": true,
    "rootDir": "./src",
    "outDir": "./dist"
  },
  "include": [
    "src/**/*.ts",
    "src/**/*.d.ts",
    "src/**/*.js" // 确保JS文件被TS处理
  ],
  "exclude": [
    "jest.config.ts",
    "src/**/*.spec.ts",
    "src/**/*.test.ts"
  ]
}

3. 修正index.ts的导出语句

确保index.ts的导入方式与JS文件的导出方式匹配:

// index.ts
// ES模块导出的情况
export { calculateSum } from './lib/utils';

// CommonJS导出的情况
import utils from './lib/utils';
export const calculateSum = utils.calculateSum;

4. 清理缓存并重新构建

  • 运行NX重置命令清理缓存:nx reset
  • 重新构建库:nx build fuse
  • 重启开发服务器:nx serve your-app-name

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:00:03