nextjs9 加载 antd4 国际化语言包报错

发布于 2022-09-12 02:54:55 字数 296 浏览 22 评论 0

nextjs版本 8.* 9.*
antd 版本 4.*

import zh_CN from 'antd/lib/locale-provider/zh_CN';

import zh_CN from 'antd/lib/locale/zh_CN';

都报如下错误
image.png

换了antd3 最新的版本也是一样的错误

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

旧情别恋 2022-09-19 02:54:55

nextjs默认把node_modules下一个js作为一个公共的js来处理,webpack就不会去分析node_modules下一个js的依赖了,会导致很多在node_modules中的依赖拿取不到,你可以尝试

 webpack(config) {
    if (config.externals) {
      const includes = [/locale/]
      config.externals = config.externals.map((external) => {
        if (typeof external !== 'function') return external
        return (ctx, req, cb) => {
          return includes.find((include) =>
            req.startsWith('.') ? include.test(path.resolve(ctx, req)) : include.test(req)
          )
            ? cb()
            : external(ctx, req, cb)
        }
      })
    }
    return config
  }
满身野味 2022-09-19 02:54:55

我的理解是,要让webpack的loader去处理这个esModule,所以要在externals这地方判断一下,不要给他排除了

webpack: (config, { isServer }) => {
    if (isServer) {
      const antdLocale = /antd\/es/;
      const antStyles = /antd\/.*?\/style.*?/;
      const origExternals = [...config.externals];
      config.externals = [
        (context, request, callback) => {
          if (request.match(antStyles) || request.match(antdLocale)) return callback();
          if (typeof origExternals[0] === 'function') {
            origExternals[0](context, request, callback);
          } else {
            callback();
          }
        },
        ...(typeof origExternals[0] === 'function' ? [] : origExternals),
      ];

      config.module.rules.unshift({
        test: antStyles,
        use: 'null-loader',
      });
    }
  
记忆消瘦 2022-09-19 02:54:55

请问楼主解决了这个问题了没呢,目前做项目也卡到这个地方了,楼主能分享一下经验码

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文