You need to enable JavaScript to run this app. 使用Rollup打包项目运行时报错makeStyles is not a function如何解决
优惠活动
大模型
产品
解决方案
定价
更多

使用Rollup打包项目运行时报错makeStyles is not a function如何解决

报错产生原因

  • Rollup的commonjs转换插件没有正确识别@material-ui/styles的命名导出,将makeStyles方法挂载到了模块的default属性下,导致命名导入拿到的对象里没有对应方法。
  • 你使用的Material UI核心包和@material-ui/styles包版本不匹配,Material UI v5版本已经废弃了@material-ui/styles包,将makeStyles迁移到了@mui/styles下,混用v4和v5版本的依赖会出现方法找不到的问题。
  • Rollup配置中将@material-ui/styles标记为了外部依赖,但是运行环境中没有引入对应依赖,或者引入的依赖版本不对。

修复方案

调整Rollup commonjs插件配置

在rollup.config.js中给@rollup/plugin-commonjs添加命名导出声明:

import commonjs from '@rollup/plugin-commonjs';

export default {
  // 其余配置保持不变
  plugins: [
    commonjs({
      namedExports: {
        '@material-ui/styles': ['makeStyles']
      }
    })
  ]
}

调整导入语句写法

将命名导入改为默认导入后解构,适配commonjs转换后的导出结构:

import MaterialUIStyles from '@material-ui/styles';
const { makeStyles } = MaterialUIStyles;

const styles = makeStyles({
    subHeading:{
        fontSize:'14px',
        fontFamily: "Open Sans"
    }
});

校验依赖版本匹配

如果使用的是Material UI v4,确保所有@material-ui/开头的依赖版本号一致;如果使用的是Material UI v5,卸载@material-ui/styles,安装@mui/styles以及配套依赖:

npm install @mui/styles @emotion/react @emotion/styled

同时修改导入语句:

import { makeStyles } from '@mui/styles';

修正external配置

如果Rollup配置中external字段包含@material-ui/styles,要么移除该配置让Rollup将依赖打包进最终产物,要么确保运行环境中已经正确引入了对应版本的@material-ui/styles依赖。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 21:18:00