2017-10-12 26 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

はご回答いただきありがとうござい問い合わせます!私は '.cache'フォルダを削除し、' gatsby develop'を再度実行して同じ問題に遭遇しました。他の考え? '.cache'フォルダに何か問題がありましたか? –

+0

次に、frontmatter値の前後に二重引用符を入れてみてください。そして、このことが解決されるまで毎回キャッシュを削除してください。私は、キャッシュがGraphQL型をコンパイルする際に役割を果たすことを知っています。これはバグかもしれません。一旦キャッシュを削除すると、タイプエラーは消えた。 – Scriptonomy

+0

これは私の間違いだった - 私は自分のコードでfrontmatterの値を二重引用符で囲みました - 私はこの投稿と質問を作成したときにそれらを追加するのを忘れました。 –

1

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

エラーの重要な部分です。

「サブフィールド」とフィールド(indexImageなど)が{ ... }と表示されるときは、これは「スカラー」(文字列、数値、浮動小数点など)タイプではなく「オブジェクト」タイプであることを意味します。

だからあなたのクエリは次のようになります。画像処理を使用する方法

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

この例でサイト文書をhttps://image-processing.gatsbyjs.org/

+0

ありがとうございました!今私はこのエラーを取得しています: 'GraphQLエラータイプファイルの不明なフィールドの解像度'。私は 'gatsby-transformer-sharp'と' gatsby-plugin-sharp'を追加しました。 –

+0

おっと、クエリが間違っています。今修正されました。ところで、あなたはまだGraphiQLの使い方を学んだことがありますか?スキーマを自分で簡単に調べることができます。 –