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

NextJS应用升级SWR v1至v2时共享模块警告的解决求助

SWR v2升级后ModuleFederationPlugin版本警告解决方法

问题根源

SWR v2重构了内部代码结构,新增swr/_internal子模块存放内部逻辑,但该子目录没有独立的package.json文件,导致Webpack的ModuleFederationPlugin无法自动识别其版本信息,从而抛出版本未识别的警告。

解决步骤

在next.config.js的ModuleFederationPlugin共享配置中,单独为swr/_internal子模块指定版本信息,与主SWR包版本保持一致:

const deps = require('./package.json').dependencies;

module.exports = {
  webpack(config) {
    config.plugins.push(
      new ModuleFederationPlugin({
        // 你的其他联邦配置(如name、filename、remotes等)
        shared: {
          // 主SWR包的共享配置
          'swr': {
            requiredVersion: deps.swr,
            singleton: true, // 可选:确保全局仅存在一个SWR实例,避免状态冲突
          },
          // 新增_internal子模块的共享配置
          'swr/_internal': {
            requiredVersion: deps.swr,
            singleton: true,
            import: 'swr/_internal', // 明确指定导入路径
          }
        }
      })
    );
    return config;
  }
};

关键说明

  • 直接引用deps.swr作为requiredVersion,确保与package.json中声明的SWR版本完全同步,避免手动输入版本号导致的不一致
  • 单独配置swr/_internal是因为主路径swr或swr/无法覆盖到该子模块的共享规则
  • singleton: true是微前端场景下的推荐配置,可防止不同子应用加载多个SWR实例引发的状态异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:34:53