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

React组件库导入报错:'Heading'未导出的排查求助

导入Rollup构建的React组件库到Next.js时出现导出错误的原因分析

我用Rollup构建了一个React组件库,在Next.js项目中导入时出现报错:Attempted import error: 'Heading' is not exported from,但查看组件库的构建产物,Heading组件确实有导出:

import { ComponentProps, FC } from "react";
export interface HeadingProps extends ComponentProps<'span'> {
    title?: string;
    type?: 'h1' | 'h2';
}
export declare const Heading: FC<HeadingProps>;

可能的原因如下:

  • Rollup配置与package.json导出映射不匹配
    组件库package.json里的main、module或exports字段,可能没有正确指向包含Heading导出的构建文件。比如main路径指向的入口文件未导出Heading,或者exports的路径映射规则有误,导致Next.js解析组件库时找不到对应的导出项。

  • 类型声明文件与运行时代码不一致
    你看到的是类型声明文件(.d.ts),但实际编译后的JS运行时文件可能并未正确导出Heading组件。比如Rollup构建时只生成了类型文件,却在JS代码中漏掉了Heading的导出,或者导出方式不符合预期(比如用了默认导出而非命名导出)。

  • Next.js模块缓存未更新
    Next.js存在模块缓存机制,如果之前组件库未包含Heading时已安装过,缓存可能未同步更新。可以尝试删除.next缓存目录,或者彻底重新安装组件库(删除node_modules和锁文件后重新执行安装命令)。

  • 导入方式与组件库导出方式不匹配
    比如组件库中Heading是默认导出(export default Heading),但你在Next.js中用了命名导入(import { Heading } from 'your-lib');或者反之,都会触发导出错误。核对组件库的实际导出方式和你的导入代码是否一致。

  • Rollup Tree Shaking误删导出
    如果Rollup开启了Tree Shaking功能,可能误判Heading组件未被使用,在构建时将其从输出代码中移除。可以检查Rollup配置的treeshake选项,或者在组件库入口文件中显式导出Heading,确保它被标记为需要保留的导出项。

  • ES模块与CommonJS兼容性问题
    若组件库输出的是CommonJS格式,而Next.js在ES模块环境下解析时可能出现导出识别异常。检查组件库package.json的type字段:如果是"type": "module",确保构建输出为ES模块;如果是CommonJS,可调整Next.js的导入方式,或在Rollup配置中同时输出两种格式的产物。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:42:15