下一次构建后的下一个 JS 图像提供 404 个图像

Posted

技术标签:

【中文标题】下一次构建后的下一个 JS 图像提供 404 个图像【英文标题】:Next JS Images after next build gives 404 images 【发布时间】:2021-05-25 10:11:54 【问题描述】:

默认 URL 结构是 http://localhost:5000/_next/image?url="someURL"。

我希望 URL 类似于 http://localhost:5000/demo/_next/image?url="someURL"。

这可以通过

// next.config.js
     images: 
            domains: ['example.domain.com'],
            path: `/demo/_next/image`
        ,

这里找不到目录指向的_next/image

在这之后,所有的图像都给404。我需要在下一个js中解决这个问题。

【问题讨论】:

path 用于在使用 cloud provider for the image optimization 时添加前缀,它不会更改 Next.js 优化图像的路径。 @juliomalves 是的,你是对的,我的问题是在我构建下一个 JS 项目之后。我不希望下一个具有这样路径的 js-Image 默认优化 (localhost:5000/_next/image?url="some URL".)。紧跟在 localhost 之后。我希望它与我的 url 前缀 (localhost:5000/demo/_next/image) 一起发生。 @juliomalves 因为这个问题。我在图像中使用了路径。因为资产前缀:'/demo/'不适用于图像。因此无法获得图像优化的好处next js 提供。 您是否尝试过使用basePath?它会改变所有文件的路径,而不仅仅是图像。 @juliomalves 是 basePath 添加,但生成的图像给出 404。因为下一个 js demo/_next/image 未路由到我的节点 js 服务器中的任何位置。我不知道它的路由_next/image 路径路由它的哪个文件夹。我将它路由到 .next 文件夹,但在我的情况下它不起作用 【参考方案1】:

您是否尝试过创建一个中间件来将这些路由重写到正确的位置?

类似: pages/_middleware.ts 内容:

import  NextRequest, NextResponse  from 'next/server';

export function middleware(req: NextRequest): NextResponse 
  if (req.nextUrl.href.includes('/demo/_next/image'))
    return NextResponse.rewrite(
      req.nextUrl.href.replace('/demo/_next/image', '/_next/image'),
    );

  return null;

【讨论】:

以上是关于下一次构建后的下一个 JS 图像提供 404 个图像的主要内容,如果未能解决你的问题,请参考以下文章

C#:获取窗口服务的下一次执行时间

如何暂停 Oracle Job 的下一次运行?

对值求和,直到条件的下一次出现

如何知道我的下一次调用printf()是否会超过屏幕大小?

如果满足条件,则移动到嵌套 for 循环中的下一次迭代

转到外部 Flash 动作脚本 3 中的下一帧