在 NextJS 应用程序中将 swr 从版本 1 升级到版本 2 时出现共享模块警告

问题描述 投票:0回答:1

我正在将我的 swr 软件包从当前版本 1 升级到最新版本 2。以下是我的

package.json
。我正在使用 React 18、NextJS 12 和 Webpack 5。该项目集成了 ModuleFederationPlugin。

{
  "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 的

next.config.js
共享 swr 项目:

// 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 设置为

deps.swr
'^2.2.2'
无法修复警告。该警告仍然重复出现。我还尝试使用
swr
swr/
设置属性名称,但这也不起作用。

任何有关如何解决此问题的帮助将不胜感激。

请参阅此处的 SWR 2.0 文章:https://swr.vercel.app/blog/swr-v2

webpack next.js warnings webpack-5 swr
1个回答
0
投票

添加以下更新后,警告消失。在

next.config.js
文件中,将 swr 更新为:

'swr/*': {
  singleton: true,
  requiredVersion: deps.swr,
  eager: true,
},

*
之后添加通配符
swr/*
修复了警告。

© www.soinside.com 2019 - 2024. All rights reserved.