Gatsby “字段”;“图像”;不能有自类型“起的选择”;“字符串”;没有子字段我错过了什么?
像许多人一样,我想做的就是能够使用NetlifyCMS的简单gastby博客。有一秒钟,我能得到一个图像出现,但此后再也没有出现过。我在其他帖子中尝试了无数的解决方案,但我一无所获。现在已经三天了 我有一个共同点:Gatsby “字段”;“图像”;不能有自类型“起的选择”;“字符串”;没有子字段我错过了什么?,gatsby,netlify-cms,gatsby-image,Gatsby,Netlify Cms,Gatsby Image,像许多人一样,我想做的就是能够使用NetlifyCMS的简单gastby博客。有一秒钟,我能得到一个图像出现,但此后再也没有出现过。我在其他帖子中尝试了无数的解决方案,但我一无所获。现在已经三天了 我有一个共同点: Field "image" must not have a selection since type "String" has no subfields 有人能看看我的代码,看看我是否遗漏了什么吗 config.yml backend:
Field "image" must not have a selection since type "String" has no subfields
有人能看看我的代码,看看我是否遗漏了什么吗
config.yml
backend:
name: github
branch: development
repo: removedforworkreasons
media_folder: static/img
public_folder: /img
collections:
- name: blog
label: Blog
folder: src/posts
create: true
fields:
- { name: path, label: Path }
- { name: date, label: Date, widget: date }
- { name: title, label: Title }
- { name: description, label: Description }
- { name: image, label: Image, widget: image }
- { name: body, label: Body, widget: markdown }
gatsby-config.js
module.exports = {
siteMetadata: {
title: `removedforwork`,
description: `removedforwork`,
author: `removed`,
},
plugins: [
`gatsby-plugin-react-helmet`,
`gatsby-plugin-sass`,
`gatsby-plugin-remove-serviceworker`,
`gatsby-transformer-sharp`,
`gatsby-plugin-sharp`,
{
resolve: `gatsby-source-filesystem`,
options: {
name: `img`,
path: `${__dirname}/static/img`,
},
},
{
resolve: `gatsby-source-filesystem`,
options: {
name: `images`,
path: `${__dirname}/src/images`,
},
},
{
resolve: `gatsby-source-filesystem`,
options: {
name: `src`,
path: `${__dirname}/src/posts`,
},
},
{
resolve: `gatsby-transformer-remark`,
options: {
plugins: [
{
resolve: `gatsby-remark-relative-images`,
options: {
// [Optional] The root of "media_folder" in your config.yml
// Defaults to "static"
staticFolderName: "static",
},
},
{
resolve: `gatsby-remark-images`,
options: {
maxWidth: 590,
},
},
],
},
},
{
resolve: `gatsby-plugin-manifest`,
options: {
name: `gatsby-starter-default`,
short_name: `starter`,
start_url: `/`,
background_color: `#663399`,
theme_color: `#663399`,
display: `minimal-ui`,
},
},
{
resolve: "gatsby-plugin-react-svg",
options: {
rule: {
include: /assets/,
},
},
},
// this (optional) plugin enables Progressive Web App + Offline functionality
// To learn more, visit: https://gatsby.dev/offline
// `gatsby-plugin-offline`,
`gatsby-plugin-netlify-cms`,
`gatsby-plugin-netlify`,
],
}
gatsby-node.js(不妨加入)
显示所有博客文章的页面(不是模板)
pages/blog.js
import React from "react"
import { Link, graphql, useStaticQuery } from "gatsby"
import Layout from "../components/layout/layout"
import Img from 'gatsby-image'
const Blog = () => {
const data = useStaticQuery(graphql`
query {
allMarkdownRemark {
edges {
node {
frontmatter {
title
date
image {
childImageSharp {
fluid {
...GatsbyImageSharpFluid
}
}
}
}
fields {
slug
}
}
}
}
}
`)
return (
<>
<Layout>
<main className="main">
<div className="articles">
<h1 className="articles__title">Articles</h1>
<section className="articles__list">
{data.allMarkdownRemark.edges.map(edge => {
return (
<a className="articles__article">
<div className="articles__article-artwork">
<figure className="articles__article-artwork-wrapper">
<Img fluid={edge.node.frontmatter.image.childImageSharp.fluid} />
</figure>
</div>
<h2 className="articles__article-title">
<Link to={`/blog/${edge.node.fields.slug}`}>
{edge.node.frontmatter.title}
</Link>
</h2>
<Link>
<p>{edge.node.frontmatter.date}</p>
</Link>
<div className="articles__article-description">
<p></p>
</div>
<span className="articles__article-more">Read more...</span>
</a>
)
})}
</section>
</div>
</main>
</Layout>
</>
)
}
export default Blog
import React from "react"
import { graphql } from "gatsby"
import Layout from "../components/layout/layout"
import Img from 'gatsby-image'
export const query = graphql`
query($slug: String!) {
markdownRemark(fields: { slug: { eq: $slug } }) {
frontmatter {
title
date
image {
childImageSharp {
fluid {
...GatsbyImageSharpFluid
}
}
}
}
html
}
}
`
const Blog = props => {
return (
<Layout>
<main className="main">
<div className="article-page">
<header className="article-page__header">
<div className="article-page__header-inner">
<h1 className="article-page__title">
{props.data.markdownRemark.frontmatter.title}
</h1>
</div>
</header>
<Img fluid={props.data.markdownRemark.frontmatter.image.childImageSharp.fluid} />
<p>{props.data.markdownRemark.frontmatter.date}</p>
<section className="article-page">
<div className="articles-page__inner">
<div
className="article-page__content"
dangerouslySetInnerHTML={{
__html: props.data.markdownRemark.html,
}}
></div>
</div>
</section>
</div>
</main>
</Layout>
)
}
export default Blog
从“React”导入React
从“盖茨比”导入{Link,graphql,useStaticQuery}
从“./组件/布局/布局”导入布局
从“盖茨比图像”导入Img
const Blog=()=>{
常量数据=useStaticQuery(graphql`
质疑{
所有的标记{
边缘{
节点{
前沿物质{
标题
日期
形象{
childImageSharp{
流质{
…盖茨比磁流体
}
}
}
}
田地{
鼻涕虫
}
}
}
}
}
`)
返回(
文章
{data.allMarkdownRemark.edges.map(edge=>{
返回(
{edge.node.frontmatter.title}
{edge.node.frontmatter.date}
阅读更多。。。
)
})}
)
}
导出默认博客
模板/blog.js
import React from "react"
import { Link, graphql, useStaticQuery } from "gatsby"
import Layout from "../components/layout/layout"
import Img from 'gatsby-image'
const Blog = () => {
const data = useStaticQuery(graphql`
query {
allMarkdownRemark {
edges {
node {
frontmatter {
title
date
image {
childImageSharp {
fluid {
...GatsbyImageSharpFluid
}
}
}
}
fields {
slug
}
}
}
}
}
`)
return (
<>
<Layout>
<main className="main">
<div className="articles">
<h1 className="articles__title">Articles</h1>
<section className="articles__list">
{data.allMarkdownRemark.edges.map(edge => {
return (
<a className="articles__article">
<div className="articles__article-artwork">
<figure className="articles__article-artwork-wrapper">
<Img fluid={edge.node.frontmatter.image.childImageSharp.fluid} />
</figure>
</div>
<h2 className="articles__article-title">
<Link to={`/blog/${edge.node.fields.slug}`}>
{edge.node.frontmatter.title}
</Link>
</h2>
<Link>
<p>{edge.node.frontmatter.date}</p>
</Link>
<div className="articles__article-description">
<p></p>
</div>
<span className="articles__article-more">Read more...</span>
</a>
)
})}
</section>
</div>
</main>
</Layout>
</>
)
}
export default Blog
import React from "react"
import { graphql } from "gatsby"
import Layout from "../components/layout/layout"
import Img from 'gatsby-image'
export const query = graphql`
query($slug: String!) {
markdownRemark(fields: { slug: { eq: $slug } }) {
frontmatter {
title
date
image {
childImageSharp {
fluid {
...GatsbyImageSharpFluid
}
}
}
}
html
}
}
`
const Blog = props => {
return (
<Layout>
<main className="main">
<div className="article-page">
<header className="article-page__header">
<div className="article-page__header-inner">
<h1 className="article-page__title">
{props.data.markdownRemark.frontmatter.title}
</h1>
</div>
</header>
<Img fluid={props.data.markdownRemark.frontmatter.image.childImageSharp.fluid} />
<p>{props.data.markdownRemark.frontmatter.date}</p>
<section className="article-page">
<div className="articles-page__inner">
<div
className="article-page__content"
dangerouslySetInnerHTML={{
__html: props.data.markdownRemark.html,
}}
></div>
</div>
</section>
</div>
</main>
</Layout>
)
}
export default Blog
从“React”导入React
从“盖茨比”导入{graphql}
从“./组件/布局/布局”导入布局
从“盖茨比图像”导入Img
export const query=graphql`
查询($slug:String!){
markdownRemark(字段:{slug:{eq:$slug}}){
前沿物质{
标题
日期
形象{
childImageSharp{
流质{
…盖茨比磁流体
}
}
}
}
html
}
}
`
const Blog=props=>{
返回(
{props.data.markdownRemark.frontmatter.title}
{props.data.markdownRemark.frontmatter.date}
)
}
导出默认博客
这对我来说太残酷了。我想我需要另一双眼睛来指出我做过的一些愚蠢的事情,但这似乎是盖茨比和netlifycms的共同问题
提前感谢 此错误有多个来源:
- 检查图像的拼写:如果您正在查询
,并且您的图像名为abc.jpg
Gatsby将默认情况下将缺少的图像字段解析为字符串。对于丢失的图像,以及错误的路径或格式图像类型(def.jpg
,jpg
,等等),也会发生同样的情况png
- 如果您的图像不是同级,或者换句话说,与JSON文件位于同一文件夹中,则适当的插件将它们解析为字符串,因为它实际上不“知道”文件的位置
否则,它会将文件解析为文件节点。您可以通过发布
,opengatsby develope
,在文档的右侧,遍历节点的层次结构。您将看到这实际上是一个字符串,但如果您将图像移动到同一文件夹并进行必要的调整,请发出http://localhost:8000/___graphql
以清除所有缓存项,然后重新发出gatsby clean
并打开一个新窗口以gatsby develope
,您将看到,现在该项实际上是一个文件节点http://localhost:8000/___graphql
盖茨比评论相对图像
降级到0.3.0版对我来说是可行的:
npm i gatsby-remark-relative-images@0.3.0
不要忘记在gatsby node.js的onCreateNode
中添加对fmImagesToRelative
的调用:
const{fmImagesToRelative}=require(“盖茨比备注相对图像”);
// ...
exports.onCreateNode=({node,actions,getNode})=>{
fmImagesToRelative(node);//谢谢,Ferran。不幸的是,我仍然没有任何效果。此时,我正在拖一个项目太长时间。此时可能需要放弃netlify cms。图像格式是什么?