Comments (8)
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.
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.
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
and everything is as should be??
from gatsby-source-prismic-graphql.
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.
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.
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.
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.
This reminds me of gatsbyjs/gatsby#8790
from gatsby-source-prismic-graphql.
Related Issues (20)
- Pagination broken - prismic.load throws error HOT 1
- Cannot find module './third-party/gatsby-node' HOT 76
- Preview path incorrectly created during Gatsby build process HOT 1
- Can't get previews working HOT 5
- [bug] Node crashing when using onCreatePage HOT 1
- imageSharp returning null HOT 6
- [Solution] Prevent preview script from being downloaded if not needed
- [Feature request]: Add meta tags to be used in pages filter method HOT 1
- [Discussion]: Enable More Maintainers of the Project HOT 12
- StaticQuery is not working HOT 4
- Build failures for large images
- [BUG] Can't get more than 20 results HOT 1
- UPDATE: Statement from Prismic HOT 6
- New fields added to repeatable type not showing in project HOT 1
- Can't load more than 20 items HOT 7
- Is there a way of Generating/Using a custom index page?
- [Feature request] Add plugin option for prismic.io address
- Apollo Client in production build
- The Prismic API started including "y" HOT 1
- __typename does not match generated type
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gatsby-source-prismic-graphql.