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
相关产品推荐
相关产品推荐

