Remix集成MUI报错缺失@emotion/server/types/create-instance模块
故障根因
报错Error: Cannot find module '@emotion/server/types/create-instance'是**@emotion/server版本不兼容、导入路径错误**共同导致的:
- 本地安装的@emotion/server版本过低,MUI服务端渲染逻辑依赖的11.11.0及以上版本才支持对应的导出
- 配置服务端渲染逻辑时错误引用了包内部的深层类型路径,没有走官方暴露的导出入口
- 初始化项目时依赖未装全,缺少@emotion/cache、@emotion/utils等关联依赖,触发模块解析失败
修复步骤
- 先清理已安装的冲突依赖,执行以下命令:
npm uninstall @emotion/react @emotion/styled @emotion/server @emotion/cache
- 安装版本匹配的全量MUI+Emotion依赖:
npm install @mui/material @emotion/react @emotion/styled @emotion/server@^11.11.0 @emotion/cache @emotion/utils
- 修正服务端入口文件(entry.server.tsx)中的导入写法,禁止引用包内部深层路径,正确导入示例:
import { renderToString } from 'react-dom/server'; import { CacheProvider } from '@emotion/react'; import createEmotionServer from '@emotion/server/create-instance'; // 此处替换为你项目中实际的emotion缓存实例文件路径 import createEmotionCache from './createEmotionCache';
- 清理项目缓存后重启:删除项目根目录下的
.cache、build文件夹,重新执行npm run dev即可。
避坑提示
如果使用yarn/pnpm作为包管理器,先检查锁文件中是否锁定了11.11.0以下版本的@emotion/server,如果有手动将版本号更新为
^11.11.0后重新执行依赖安装即可。如果是TS项目还可以检查tsconfig.json中是否开启了moduleResolution: "node"或者更高的解析配置,避免模块路径解析异常。
内容的提问来源于stack exchange,提问作者Serfi
相关产品推荐
相关产品推荐

