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

Vite模块联邦共享Zustand时出现create不是函数的问题

问题分析与解决

错误原因

这个create is not a function错误本质是模块联邦共享依赖不一致导致的:远程应用(core)的useUser钩子依赖zustand的create函数,但宿主应用(host)没正确共享zustand和immer,导致在宿主环境中加载的create不是预期的函数,甚至出现多实例冲突。

解决步骤

1. 同步宿主与远程的共享依赖配置

修改宿主应用的模块联邦配置,把zustand和immer加入共享列表,并开启singleton模式(确保全局只有一个依赖实例):

federation({
    name: 'host',
    filename: 'remoteEntry.js',
    remotes: {
        core: 'http://localhost:8001/dist/assets/remoteEntry.js',
    },
    exposes: {},
    shared: {
        'react': { singleton: true },
        'react-dom': { singleton: true },
        'zustand': { singleton: true },
        'immer': { singleton: true }
    },
}),

2. 确保依赖版本完全一致

检查远程和宿主应用的package.json,保证zustand和immer的版本完全相同。比如两边都用zustand@4.4.7和immer@10.0.3,版本不匹配会导致导出的函数结构差异,引发类型错误。

3. 验证远程应用的导入正确性

确认远程应用的Store.ts中,create和produce的导入路径正确:

import { create } from 'zustand';
import { produce } from 'immer';

如果导入了错误的模块(比如自定义的create函数),也会导致该错误。

4. 清理缓存并重新构建

分别在两个应用中执行以下操作,清理旧的依赖和构建缓存:

  • 删除node_modules和锁文件(package-lock.json/yarn.lock/pnpm-lock.yaml)
  • 重新安装依赖:npm install(或对应包管理命令)
  • 重新构建远程应用并重启两个应用的开发服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:23:12