我正在使用Gatbsy、Contentful CMS 和Netlify建立一个网站。它看起来很棒并且可以在本地工作,但是我在使用tracedSVG选项的流体图像的生产中遇到了问题。Netlify 部署有时会工作,当我向项目添加更多图像时,现在会不断出现以下错误(并不总是在同一页面中):
10:53:45 AM: The GraphQL query from /opt/build/repo/src/pages/index.js failed.
10:53:45 AM: Errors:
10:53:45 AM: VipsJpeg: Corrupt JPEG data: premature end of data segment
10:53:45 AM: VipsJpeg: out of order read at line 544
10:53:45 AM: GraphQL request:54:3
10:53:45 AM: 53 | fragment GatsbyContentfulFluid_tracedSVG on ContentfulFluid {
10:53:45 AM: 54 | tracedSVG
10:53:45 AM: | ^
10:53:45 AM: 55 | aspectRatio
或者有时
error
The GraphQL query from /opt/build/repo/src/pages/index.js failed.
Errors: Input file contains unsupported image format
GraphQL request:40:3
| fragment GatsbyContentfulFluid_tracedSVG on ContentfulFluid {
| tracedSVG
| ^
| aspectRatio
在极少数情况下
Errors:
VipsJpeg: Empty input file
(最后一个没有意义,因为图像存在于 Contentful 和我的内容模型的必填字段)
如前所述;GraphQL 查询从本地的 Contentful 工作中检索 tracedSVG 图像。我的代码如下:
import React from "react"
import { Link, graphql } from "gatsby"
import Img from "gatsby-image"
const IndexPage = ({ data: { allContentfulIndexPage }) => {
const { myImage } = allContentfulIndexPage.edges[0].node
return (
<div>
{...someIrrelevantCodeToTheQuestion}
<Img fluid={myImage.fluid}/>
</div>
)
}
export default IndexPage
export const query = graphql`
query IndexPageQuery {
allContentfulIndexPage {
edges {
node {
myImage {
fluid {
...GatsbyContentfulFluid_tracedSVG
}
}
}
}
}
}
`
通过使用 GraphiQL,我发现在本地使用tracedSVG
而不是在...GatsbyContentfulFluid_tracedSVG
本地也可以工作,但它在生产/Netlify 环境中崩溃是一样的。我考虑使用png
图像而不是jpg
因为错误表明文件本身有问题,尽管它们在本地渲染得很好,但 png 大小的等价物会减慢网站的速度(100kB 的 jpg 图像在 png 中大约是 900kb)。
是否有人在生产中使用 jpg 图像进行渲染时遇到过同样的问题tracedSVG
,如果是这种情况,您是如何解决以阻止经常性崩溃的?谢谢你。