Nextjs:TypeError:不支持的文件类型:更新到 v.11 后未定义

IT技术 reactjs webpack next.js
2021-03-26 07:15:12

当我尝试加载图像时更新 Next to 11 之后:

import segmentLogoWhitePng from 'assets/images/my-image.png'

我收到以下错误:

TypeError: unsupported file type: undefined (file: undefined)
5个回答

最新更新

它现在从next@v11.0.1. 无需遵循以下步骤。


暂时禁用静态图像功能作为解决方法:

// next.config.js

module.exports = {
  images: {
    disableStaticImages: true
  }
}

更新:这已在next@11.0.1-canary.4 中得到修复安装它:

$ npm install next@canary

请参阅相关问题PR

这有效,你知道这是否会在未来修复?
2021-05-28 07:15:12
谢谢你。我希望它可以以不同的方式解决,但我可以看到这是唯一的解决方案。
2021-06-16 07:15:12
仍然收到此错误 ^11.1.2
2021-06-21 07:15:12

禁用静态导入

- 从 10.0.0 版本开始,Next.js 内置了图像组件和自动图像优化

默认行为允许您从 './icon.png 导入静态文件,例如导入图标,然后将其传递给 src 属性。在某些情况下,如果此功能与期望导入行为不同的其他插件冲突,您可能希望禁用此功能。您可以使用以下配置禁用静态图像导入。

  // next.config.js
  
  images: {
        disableStaticImages: true
    }

我刚刚从 webpack (next.config.js) 中删除了我的图像/css 加载器配置,它开始工作了。

next.config.js你可以添加文件类型检查和处理程序。我知道可以通过放置以下代码并下载 npm 包@svgr/webpack 来处理 svg,因此可能有一个 .png 等效项

module.exports = {
  webpack(config) {
    config.module.rules.push({
      test: /\.svg$/,
      use: ["@svgr/webpack"],
    });

    return config;
  },
};

一个可以工作的例子是这个堆栈溢出的代码

module.exports = {
    module: {
      rules: [
        {
          test: /\.(png|jpe?g|gif)$/i,
          use: [
            {
              loader: 'file-loader',
            },
          ],
        },
      ],
    }
};

我知道这个答案不是 100%,但希望它会有所帮助

查看 GitHub 存储库中的问题修复静态图像的类型它现在可以工作

https://github.com/vercel/next.js/pull/25808

  module.exports = {
  images: {
    disableStaticImages: true
  }
}