【问题标题】:Next.js failed external image with extension in urlNext.js 在 url 中有扩展名的外部图像失败
【发布时间】:2021-09-27 04:03:56
【问题描述】:

我的产品带有来自几个不同远程服务器的图像("next": "^10.1.3",)。现在我想为此添加 next.js 图像。但是在来自一台服务器的代码更新图像不显示(其他都很好)之后。我认为这可能与 URL 中的文件扩展名有关,但 100% 不确定。

例如https://zoom.ocado.com/productImages/518/518554011_518554011_0_1601386321000_1280x1280.jpg Next js 不显示此图。

【问题讨论】:

    标签: javascript reactjs next.js


    【解决方案1】:

    引用Next.js doc

    要为托管在外部网站上的图像启用图像优化, 使用 Image src 的绝对 url 并指定哪些域是 允许优化

    因此,请将其添加到您的 next.config.js

    module.exports = {
      images: {
        domains: ['zoom.ocado.com'],
      },
    }
    

    application/octet-stream内容类型响应服务

    由于您提供的图片 URL 为 application/octet-stream,这是用于提供图片的错误 mime 类型 - 没有直接的方式来使用 next/image

    但是,您仍然可以执行以下操作;

    1. 使用 next.js v11.0.2-canary.4 - 他们最近修复了这个问题 here
    2. 使用unoptimized 图像 - 顾名思义,next.js 不会在构建时优化您的图像。例如
    <Image src="https://zoom.ocado.com/productImages/518/518554011_518554011_0_1601386321000_1280x1280.jpg"
       alt="Test"
       layout="fill"
       unoptimized={true} 
    />
    

    【讨论】:

    • 没有。我已经有了这个配置。这个配置(我有 3 个不同的来源)适用于其他来源的图像,但不适用于这个(并且这个来源的所有链接都包括文件扩展名)。
    • @МаксимШутков 我刚刚注意到,您提供的图片网址为application/octet-stream - 这是需要解决的服务器问题。您仍然可以使用this answer's approach
    • 这是否意味着下一个 js 图像优化不起作用?
    • @МаксимШутков 目前还没有直接的方法。看看我更新的答案。
    【解决方案2】:

    检查服务器的响应并检查文件的扩展名。我认为这是你的问题。

    【讨论】:

    • 400 错误,仅适用于该来源的图像。其他来源的图像返回正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 2018-06-18
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    相关资源
    最近更新 更多