2017-10-12 11 views
3

위해 나는이 고민 봤는데 : 내 index.md 파일과 같은 폴더 내 이미지와이미지 Gatsby.js

--- 
path: '/path-to/' 
title: 'Title of Post' 
indexImage: './img.jpg' 
--- 

:

내 앞 문제처럼 보인다.

<img src={ post.frontmatter.indexImage }></img> 

앞 문제에 나와있는 소스에 끌어 것이 생각 : 내 templates/post.js 파일에서

, 나는 다음 줄을 가지고있다. 내 post.js 쿼리는 왜이 작동하지 않습니다에

GraphQL Error Field "indexImage" of type "File" must have a selection of subfields. Did you mean "indexImage { ... }"? 

어떤 생각 :

다음
export const postQuery = graphql` 
    query BlogPostByPath($path: String!) { 
    markdownRemark(frontmatter: { path: { eq: $path } }) { 
     html 
     frontmatter { 
     path 
     title 
     indexImage 
     } 
    } 
    } 
`; 

오류 메시지가 무엇입니까? 나는 개츠비에 아직 익숙하지 않아 내 머리 위에있는 문제 일 수 있습니다. 미리 감사드립니다.

답변

1

.cache 폴더를 삭제하여 빌드 캐시를 무효화하십시오.

+0

당신의 응답을 주셔서 감사 쿼리를 사용하는 방법을

query BlogPostByPath($path: String!) { markdownRemark(frontmatter: { path: { eq: $path } }) { html frontmatter { path title indexImage { childImageSharp { resolutions(width: 400) { width height src srcSet } } } } } } 

이 예제 사이트 문서 :

그래서 당신의 쿼리처럼 보일 것이다! '.cache' 폴더를 지우고'gatsby develop'을 다시 실행하여 같은 문제에 부딪 혔습니다. 다른 생각? '.cache' 폴더에 문제가 있었습니까? –

+0

그런 다음 frontmatter 값을 큰 따옴표로 묶으십시오. 그리고이 문제가 해결 될 때까지 매회 캐시를 삭제하십시오. 캐시가 GraphQL 유형을 컴파일하는 데 중요한 역할을한다는 것을 알고 있습니다. 이것은 버그 일 수 있습니다. 일단 캐시를 삭제하면 유형 오류가 사라집니다. – Scriptonomy

+0

그건 내 실수 였어. 내 코드에서 frontmatter 값에 대해 큰 따옴표를 사용했다. 나는이 포스트와 질문을 만들 때 그들을 추가하는 것을 잊었다. –

1

must have a selection of subfields. Did you mean "indexImage { ... }

오류의 핵심 부분입니다.

{ ... }과 함께 "서브 필드"와 필드 (indexImage 등)를 볼 때마다 이것은 "스칼라"(예 : 문자열, 숫자, 부동 등) 유형이 아닌 "객체"유형임을 의미합니다. 이미지 처리 https://image-processing.gatsbyjs.org/

+0

답변 해 주셔서 감사합니다. 이제이 오류가 발생합니다 : 'GraphQL 오류 알 수없는 형식의 파일 형식 필드'. gatsby-transformer-sharp와 gatsby-plugin-sharp가 추가되었습니다. –

+0

죄송합니다. 쿼리가 잘못되었습니다. 이제 해결되었습니다. BTW, GraphiQL 사용법을 배웠습니까? 스키마를 쉽게 탐색 할 수 있습니다. –