当我想导出我的nextjs应用程序时,它说我不能在静态网站上导出我的图像。
错误:使用Next.js的默认加载器进行图像优化与next export
不兼容。可能的解决方案:- 使用next start
运行服务器,其中包括图像优化API。- 使用任何支持图像优化的提供程序(如Vercel)。- 在next.config.js
中配置第三方加载器。- 使用next/image
的loader
prop 。
我怎样才能让它这样做呢?
有没有一种方法可以让我简单地告诉它静态渲染图像?我不想去其他在线图像加载器..
5条答案
按热度按时间uinbv5nw1#
我创建了一个npm模块,这样我们就可以在使用静态导出功能的同时使用Next.js组件和优化的图像。
https://www.npmjs.com/package/next-image-export-optimizer
该库 Package 了Next.js的组件,并在导出时使用sharp.js自动创建优化的图像。
它使用自定义加载器为Next.js组件创建的创建srcset。然后在构建/导出时,public/images文件夹中的图像(例如)会使用sharp.js进行优化,并复制到构建文件夹中。
yr9zkbsy2#
您需要在Next.js中设置自定义图像加载器
在
next.config.js
文件中,将此属性添加到导出中:然后编写一个名为
loader.js
的脚本,导出以下内容:对于每个
Image
组件,手动设置loader
属性:2exbekwf3#
我将把skara9的答案加进去,因为它对我不太起作用。我在github上找到了一个thread讨论它,那里的答案对我很有效。它只是 Package 在NextJS图像组件周围,对我来说非常简单。
确保更改导入并更新
next.config.js
6yoyoihd4#
现在最简单的解决方案是选择退出下一个图像优化。这对我的项目来说不是问题。你可以把这个添加到
next.config.js
中:或者,您可以使用不需要服务器运行时的自定义加载器,我不建议这样做,因为:
1.使用像
cloudinary
这样受支持的云图像加载器可能更容易。1.您可以轻松使用Next的内置图像优化器,您可以使用
next start
启动。但是,如果你真的想使用自定义的预处理器和加载器,你可以像前面的回答中提到的那样使用https://www.npmjs.com/package/next-image-export-optimizer。
toe950275#
对于那些想要从2023年起使用next.js导出优化图像的人,您可以在这里阅读更多信息!
https://next-export-optimize-images.vercel.app/docs/comparison#next-image-export-optimizer
安装它
并用作nextjs插件
然后更改构建脚本
就是你要做的