Next.JS 压缩图片为base64空图片

Next.JS compressing images to base64 empty image

我有一张 pizza.jpg 图片,已上传到 Cloudflare Pages。我把它放在页面 (.jsp 文件)

<div className="product_img">
    <Image src={'pizza.jpg'} loader={localLoader} alt={'Pizza'} width='300' height='150'/>
</div>

本地加载程序:

function localLoader({src, width, quality}) {
    return `https://2abf8861.site-deplo.pages.dev/${src}`;
}

Next.js 配置:

const nextConfig = {
    reactStrictMode: true,
    images: {
        domains: ['2abf8861.site-deploy.pages.dev'],
        formats: ['image/avif', "image/webp"],
        loader: 'custom'
    },
    assetPrefix: './'
}

然后我使用

导出页面
next build && next export

这张图片变成了:

    <img
   style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0"
   alt="" aria-hidden="true"
   src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27300%27%20height=%27150%27/%3e"/></span><img
   alt="Pizza" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
   decoding="async" data-nimg="intrinsic"
   style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/>
<noscript>
   <img
      alt="Pizza"
      srcSet="https://2abf8861.site-deploy.pages.dev/pizza.jpg 1x, https://2abf8861.site-deploy.pages.dev/pizza.jpg 2x"
      src="https://2abf8861.site-deploy.pages.dev/pizza.jpg" decoding="async" data-nimg="intrinsic"
      style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"
      loading="lazy"/>
</noscript>

如果我使用 noscript 中的 img 标签,它就可以正常工作。否则它将是一个1*1px的白色图像。

或者我可以使用

next run dev 

并且会正常构建。

删除.next 目录,运行

next build && next export

再次解决此问题。