Next.js 在本地目录中搜索图像,而不是在 AWS 上

Posted

技术标签:

【中文标题】Next.js 在本地目录中搜索图像,而不是在 AWS 上【英文标题】:Next.js searches images in local directory not on AWS 【发布时间】:2021-05-09 08:58:16 【问题描述】:

我们正在将我们的应用从 Create React App 转换为 Next.js。

Next.js 应该从 AWS 加载图像,但这不会发生。为什么?

几天前它起作用了。你认为这是一些缓存问题还是什么?

你有什么想法吗?

在 Next.js 中,应用会从该本地 URL 加载图像:

http://localhost:3000/_next/image?url=https%3A%2F%2Fticket-t01.s3.eu-central-1.amazonaws.com%2Fob8h_0.cover.jpg&w=1200&q=100

next.config.js:

const  nextI18NextRewrites  = require("next-i18next/rewrites");

const localeSubpaths = 
  hu: "hu",
  en: "en"
;

module.exports = 
  rewrites: async () => nextI18NextRewrites(localeSubpaths),
  publicRuntimeConfig: 
    localeSubpaths
  ,
  images: 
    domains: ["ticket-t01.s3.eu-central-1.amazonaws.com"]
  
;

1 个图片标签:

<Image
  src=`https://ticket-t01.s3.eu-central-1.amazonaws.com/$props.imgId_0.cover.jpg`
  className=styles.imageEventMain
  
  layout="responsive"
  width=1795
  height=1000
  quality=100
/>;

在 React 中,AWS 或图像加载没有问题。

编辑

尝试访问图像时的console.log:

【问题讨论】:

当图像尝试加载到您的应用程序时,您是否遇到任何错误?可以直接从浏览器访问图片吗? 我将控制台的图片上传到问题中。我在同一个 Url 访问 Create React App 中的这些图像,我必须将其转换为 Next.js。我认为主要问题是 Next 想从 localhost 加载图像,但它们在 AWS 上 图片是从 localhost 提供的,因为由于您使用的是next/image,Next.js 将使用其内置的图像优化来优化图像并提供它。 没关系,我现在明白了,但是在那种情况下,为什么图像在 localhost 上不可用,在 next.js 缓存它们的路径上? @GyarmatiIstván 你最终解决了这个问题吗?面临同样的问题 【参考方案1】:

我设法解决了这个问题:

变化:

module.exports = 
  rewrites: async () => nextI18NextRewrites(localeSubpaths),
  publicRuntimeConfig: 
    localeSubpaths
  ,
  images: 
    domains: ["ticket-t01.s3.eu-central-1.amazonaws.com"]
  
;

收件人:

module.exports = 
  rewrites: async () => nextI18NextRewrites(localeSubpaths),
  publicRuntimeConfig: 
    localeSubpaths
  ,
  images: 
    loader: "imgix",
    path: "https://ticket-t01.s3.eu-central-1.amazonaws.com/",
    domains: ["ticket-t01.s3.eu-central-1.amazonaws.com"]
  
;

像这样更改您的图像组件:

<Image
  src=`$props.imgId_0.cover.jpg`
  className=styles.imageEventMain
  
  layout="responsive"
  width=1795
  height=1000
  quality=100
/>;

这应该可以解决问题!

【讨论】:

以上是关于Next.js 在本地目录中搜索图像,而不是在 AWS 上的主要内容,如果未能解决你的问题,请参考以下文章

Next.Js 图像组件不会在 localhost 上加载图像

如何在 Next.js 中加载外部图像?

Next.js s-s-r 存储访问令牌而不使用 redux

Next.js 公共图像未在生产构建中显示

smartgwt 保存图像文件而不是在浏览器中显示

我想使用下一个 js 从本地存储导入图像