从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
相关产品推荐
相关产品推荐

