提问人:myverdict 提问时间:9/9/2023 更新时间:9/13/2023 访问量:37
在 NextJS 应用程序中将 swr 从版本 1 升级到版本 2 时出现共享模块警告
Shared module warning when upgrading swr from version 1 to version 2 in a NextJS app
问:
我正在将我的 swr 软件包从当前版本 1 升级到最新版本 2。下面是我的.我正在使用 React 18、NextJS 12 和 Webpack 5。该项目集成了 ModuleFederationPlugin。package.json
{
"scripts": {...},
"dependencies": {
...
"react": "^18.2.0",
"react-dom": "^18.2.0",
"next": "12.2.2",
"swr": "^2.2.2",
"webpack": "^5.78.0",
...
}
"devDependencies": {...}
}
下面是我为 ModuleFederationPlugin 共享的 swr 项:next.config.js
// eslint-disable-next-line import/no-extraneous-dependencies
const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin');
const deps = require('./package.json').dependencies;
module.exports = {
basePath: process.env.BASE_PATH,
reactStrictMode: true,
env: {...},
webpack(config) {
config.module.rules.push({
test: /\.svg$/,
use: ['@svgr/webpack'],
});
config.plugins.push(
new ModuleFederationPlugin({
name: 'someName',
exposes: {},
shared: [
{
react: {
singleton: true,
requiredVersion: deps.react,
eager: true,
},
'react-dom': {
singleton: true,
requiredVersion: deps['react-dom'],
eager: true,
},
'swr/': {
// requiredVersion: deps.swr,
requiredVersion: '^2.2.2',
eager: true,
},
...
},
],
}),
);
return config;
},
};
当我升级我的 swr 软件包时,我收到以下警告:
warn - shared module /Users/nextjs-app/node_modules/swr/_internal/dist/index.mjs -> /Users/nextjs-app/node_modules/swr/_internal/dist/index.mjs
No version specified and unable to automatically determine one. No version in description file (usually package.json). Add version to description file /Users/nextjs-app/node_modules/swr/_internal/package.json, or manually specify version in shared config.
因此,我像这样更改了 ModuleFederationPlugin 中 swr 的共享路径(请参阅上面的文件以获取完整的配置:next.config.js
'swr/': {
// requiredVersion: deps.swr,
requiredVersion: '^2.2.2',
eager: true,
},
将 swr 设置为或不修复警告。警告仍然重复出现。我还尝试使用and设置属性名称,但这也不起作用。deps.swr
'^2.2.2'
swr
swr/
有关如何解决此问题的任何帮助将不胜感激。
请参阅此处的 SWR 2.0 文章:https://swr.vercel.app/blog/swr-v2
答:
0赞
myverdict
9/13/2023
#1
添加以下更新后,警告将消失。在文件中,将 swr 更新为:next.config.js
'swr/*': {
singleton: true,
requiredVersion: deps.swr,
eager: true,
},
修复警告后添加通配符。*
swr/*
评论