Giter VIP home page Giter VIP logo

Comments (8)

trickydisco78 avatar trickydisco78 commented on June 3, 2024 1

It seems weird that i have to rely on the get lodash package when the data should be available on the data.prismic object. Not sure why it's not available at build time?

from gatsby-source-prismic-graphql.

birkir avatar birkir commented on June 3, 2024 1

Do we know why the object isn't available at build time?

I just added a console log to your pagination example: https://github.com/birkir/gatsby-source-prismic-graphql/blob/master/examples/pagination/src/templates/article.js

instead of using get i'm trying to access the object directly

console.log(props.data.prismic.allArticles.edges[0].node.title);

and i'm getting the same kind of error

WebpackError: TypeError: Cannot read property 'node' of undefined

Because drafts will not be available on build time, only runtime. This is the nature of Gatsby and the whole purpose of the plugin.

You can either use lodash.get, @babel/plugin-proposal-optional-chaining or ts-optchain if you use typescript.

// lodash get
const title = get(data, 'prismic.allArticles.edges.0.node.title', 'no title yet');

// babel optional chaining
const title = data?.prismic?.allArticles?.edges?[0].?node.?title || 'no title yet';

// ts-optchain
const title = oc(data).prismic.allArticles.edges[0].node.title('no title yet');

I'm closing this issue for now.

from gatsby-source-prismic-graphql.

trickydisco78 avatar trickydisco78 commented on June 3, 2024

Have been debugging this for a day or 2 but can't work out why data isn't available at build time. I even console log out the data prop which shows in the build process
Screenshot 2019-05-16 at 15 42 56
and everything is as should be??

from gatsby-source-prismic-graphql.

birkir avatar birkir commented on June 3, 2024

Maybe the data isn't published yet, but the draft is.

So you have to use lodash/get to ensure its not crashing.

import { get } from 'lodash';
// ...
<h1>{get(data.prismic, 'job_listing.job_title.0.text', 'not found')}</h1>

from gatsby-source-prismic-graphql.

trickydisco78 avatar trickydisco78 commented on June 3, 2024

Cheers. Seems there's something going on with thr lifecycle of the data at build time. it appears at build time the local variable 'data' isn't available. If i use the get utility from lodash and pass in the data.prismic object it works?! Wondering what happens with gatsby at build time and what data it has access to and how this differs at runtime in dev mode. I'm guessing dev mode is basically running a mounted app

from gatsby-source-prismic-graphql.

GreatState avatar GreatState commented on June 3, 2024

Does the graphql plugin effectively hit the draft state of documents in prismic? or is a payload included with the request and somehow uses the graphql query in the component?

from gatsby-source-prismic-graphql.

trickydisco78 avatar trickydisco78 commented on June 3, 2024

Do we know why the object isn't available at build time?

I just added a console log to your pagination example: https://github.com/birkir/gatsby-source-prismic-graphql/blob/master/examples/pagination/src/templates/article.js

instead of using get i'm trying to access the object directly

console.log(props.data.prismic.allArticles.edges[0].node.title);

and i'm getting the same kind of error

WebpackError: TypeError: Cannot read property 'node' of undefined

from gatsby-source-prismic-graphql.

whmountains avatar whmountains commented on June 3, 2024

This reminds me of gatsbyjs/gatsby#8790

from gatsby-source-prismic-graphql.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.