网站搜索

typescript - NextJS 图像优化在 Vercel 生产环境中不起作用


目前我正在开发一个 NextJS 应用程序。我的应用程序将通过多个域名在 Vercel 上部署。该应用程序应动态渲染图像。在 Vercel 的预览环境中,所有图像都能正确渲染,但当我将应用程序部署到生产环境时,优化图像的响应为:Bad request INVALID_IMAGE_OPTIMIZE_REQUEST

如果我请求原始(未优化)图像,一切都按预期工作。我使用的是最新版本的 NextJS(14.0.4)

我尝试过为 NextJS 使用多种不同的配置(config.nextjs.mjs)。我还尝试手动请求不同的图片(原始和优化过的)。

我目前的 next.config.mjs 看起来是这样的

images: {
    dangerouslyAllowSVG: true,
    remotePatterns: [
        {
            hostname: 'domain1.example.com',
        },
        {
            hostname: 'domain2.example.com',
        },
    ],
},

我的图片网址例如是 /api/images/some-image-uuid。为了加载优化后的图片,我使用 NextJS 的 Image 组件(来自 next/image)。

答案#1

你的 nextconfig 可能不完整。我建议添加协议和端口,以及其他必要的属性。这里是文档

你可能还需要在 images 对象中添加域。问题如下

images: {
    remotePatterns: [
      {
        protocol: "https",
        hostname: "openweathermap.org",
        port: "",
      },
    ],
  },

答案#2

在我的情况下,我将我的图片迁移到了另一个 S3 存储桶,但忘记在我的生产环境变量中反映这一更改。

我花了几个小时挖掘,但当我替换环境变量时,我的图片又开始显示了。