์๋
๋ชจ๋๋ค. ๊ณ ๊ธ ์คํํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝํ
์ธ ๋ฅผ ๋ธ๋ก๊ทธ์ ์ฐ๊ฒฐํ๋ ค๊ณ ํฉ๋๋ค. ๋ฏน์ค์์ ํ์ผ ์์คํ
ํ๋ฌ๊ทธ์ธ์ ๊บผ๋ด๊ณ ์ํ ๊ฒ์๋ฌผ์ ๊ฐ์ ธ์ค๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ์ฌ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์์ํ ๋ GraphQL Error Unknown argument slug
์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
exports.createPages = ({ graphql, boundActionCreators }) => {
const { createPage } = boundActionCreators
return new Promise((resolve, reject) => {
graphql(
`
{
allContentfulBlogPost(limit: 1000) {
edges {
node {
id
slug
}
}
}
}
`
)
.then(result => {
if (result.errors) {
reject(result.errors)
}
const postPage = path.resolve("src/templates/post.jsx");
_.each(result.data.allContentfulBlogPost.edges, edge => {
console.log(edge.node);
createPage({
path: `/post/${edge.node.slug}`,
component: postPage,
context: {
id: edge.node.id,
slug: edge.node.slug
},
})
})
})
.then(resolve)
})
}
์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ฉด ์ค์ ์ฌํ ๊ตฌ์ฑ ์์ graphQL ์ฟผ๋ฆฌ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ "์ฌ๋ฌ๊ทธ"๋ฅผ ํฌํจํ๋๋ก ์ปจํ
์คํธ๊ฐ ์ค์ ๋์ด ์์ง๋ง ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๊ฒ์ด ๋ฐ์ํ๋ ์ฝ์ ์ถ๋ ฅ ์ค ์ผ๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Fetch Contentful data: 404.350ms
success source and transform nodes โ 0.552 s
success building schema โ 0.548 s
success createLayouts โ 0.055 s
โ /xxxxxxx/src/templates/post.jsx
{ id: 'c7juaTIcg6cW2wAGKCQuios', slug: 'test-post' }
success createPages โ 0.061 s
success createPagesStatefully โ 0.023 s
GraphQL Error Unknown argument `slug`
file: /Users/joshuaweaver/Documents/JoyfulNoise/joyfulnoiseliving/src/templates/post.jsx
1 |
2 | query BlogPostBySlug($slug: String!) {
> 3 | allContentfulBlogPost(slug: { eq: $slug }) {
| ^
4 | title
5 | slug
...
์ ๋ GraphQL์ ์ฒ์ ์ ํ์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ๋ถ๋ช ํ ๊ฒ์ ๋์น ์ ์์ต๋๋ค. ์ฌ๊ธฐ์์ ๋ณผ ์ ์๋ ๊ฒ ์ค ํน์ดํ ๊ฒ์ด ์์ต๋๊น? ์ฐพ์์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
๋ ธ๋์ ์ฌ๋ฌ๊ทธ๊ฐ ์์ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
2017๋ 9์ 10์ผ ์ผ์์ผ ์ค์ 7์ 17๋ถ์ Josh Weaver [email protected]์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์๋ ๋ชจ๋๋ค. ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ฝํ ์ธ ๋ฅผ ๋ธ๋ก๊ทธ์ ์ฐ๊ฒฐํ๋ ค๊ณ
๊ธฐ๋๊ธฐ. ๋ฏน์ค์์ ํ์ผ ์์คํ ํ๋ฌ๊ทธ์ธ์ ๊บผ๋ด์ ์๋ ์ค์ ๋๋ค.
์ํ ํฌ์คํธ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด. ๊ทธ๋ฌ๋ ํ์ฌ ๋ฐ๊ณ ์๋
์ค๋ฅ GraphQL ์ค๋ฅ ๊ฐ๋ฐ ์๋ฒ ์์ ์ ์ ์ ์๋ ์ธ์ ์ฌ๋ฌ๊ทธ์ ๋๋ค.export.createPages = ({ graphql, boundActionCreators }) => {
const { createPage } = boundActionCreators
return new Promise((ํด๊ฒฐ, ๊ฑฐ๋ถ) => {
๊ทธ๋ํql(
{ allContentfulBlogPost(limit: 1000) { edges { node { id slug } } } }
)
.then(๊ฒฐ๊ณผ => {
if (๊ฒฐ๊ณผ.์ค๋ฅ) {
๊ฑฐ๋ถ(๊ฒฐ๊ณผ.์ค๋ฅ)
}
const postPage = path.resolve("src/ํ ํ๋ฆฟ/post.jsx");
_.each(result.data.allContentfulBlogPost.edges, edge => {
์ฝ์.๋ก๊ทธ(์์ง.๋ ธ๋);createPage({ path: `/post/${edge.node.slug}`, component: postPage, context: { id: edge.node.id, slug: edge.node.slug }, }) }) }) .then(resolve)
})
}์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ฉด "์ฌ๋ฌ๊ทธ"๋ฅผ ํฌํจํ๋๋ก ์ปจํ ์คํธ๊ฐ ์ค์ ๋์ด ์์ต๋๋ค.
์ค์ ์ฌํ ๊ตฌ์ฑ ์์ graphQL ์ฟผ๋ฆฌ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ๊ณณ...
ํ์ง๋ง ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๊ฒ์ด ๋ฐ์ํ๋ ์ฝ์ ์ถ๋ ฅ ์ค ์ผ๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.์ฝํ ์ธ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ: 404.350ms
์ฑ๊ณต ์์ค ๋ฐ ๋ณํ ๋ ธ๋ โ 0.552์ด
์ฑ๊ณต ๊ตฌ์ถ ์คํค๋ง โ 0.548์ด
์ฑ๊ณต createLayouts โ 0.055์ด
โ /xxxxxxx/src/templates/post.jsx
{ ์์ด๋: 'c7juaTIcg6cW2wAGKCQuios', ์ฌ๋ฌ๊ทธ: 'ํ ์คํธ ํฌ์คํธ' }
์ฑ๊ณต createPages โ 0.061์ด
์ฑ๊ณต createPagesStatefully โ 0.023์ด
GraphQL ์ค๋ฅ ์ ์ ์๋ ์ธ์slug
ํ์ผ: /Users/joshuaweaver/Documents/JoyfulNoise/joyfulnoiseliving/src/templates/post.jsx
1 |
2 | ์ฟผ๋ฆฌ BlogPostBySlug($slug: ๋ฌธ์์ด!) {3 | allContentfulBlogPost(์ฌ๋ฌ๊ทธ: { eq: $slug }) {
| ^^
4 | ์ ๋ชฉ
5 | ๊ฐํ
...์ ๋ GraphQL์ ์ฒ์ ์ ํ์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ๋ถ๋ช ํ ๊ฒ์ ๋์น ์ ์์ต๋๋ค.
โ
์ด ์ค๋ ๋์ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/gatsbyjs/gatsby/issues/2069 ๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAEVh7fahni3VfI4tz_PphtJPctw2jV5ks5sg2LWgaJpZM4PSM2E
.
๊ธ์, ๋๋ Contentful์ ํ๋์ ๋ ธ๋/๊ฒ์๋ฌผ๋ง ์์์ต๋๋ค.
ํ .. ์ฟผ๋ฆฌ๊ฐ allContentfulBlogPost
์์ contentfulBlogPost
๋ก ์คํ๋๋ ๋์ ์ฟผ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ง๊ธ์ ์๋ํฉ๋๋ค... ํ์ง๋ง GraphQL์ ์ฒ์ ์ ํ๊ธฐ ๋๋ฌธ์ ์ดํด๊ฐ ์ ๋์ง ์์ต๋๋ค. ์ฐจ์ด์ .
์ ๋ง๋ค, ๊ทธ ์ฟผ๋ฆฌ๋ ํตํ์ง ์์์ ๊ฒ์ด๋ค. ๊ตฌ์ฑ ์์์ ์ฟผ๋ฆฌ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์ Graph i QL์์ ์ฟผ๋ฆฌ๋ฅผ ์๋ํ์ญ์์ค.
"all"์ ์ ํ์ ๋ชจ๋ ๋ ธ๋๋ฅผ ์ฟผ๋ฆฌํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ๋ชจ๋๊ฐ ์์ผ๋ฉด ๋จ์ผ ํญ๋ชฉ์ ์ฟผ๋ฆฌํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ ๋ง๋ค, ๊ทธ ์ฟผ๋ฆฌ๋ ํตํ์ง ์์์ ๊ฒ์ด๋ค. ๊ตฌ์ฑ ์์์ ์ฟผ๋ฆฌ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์ Graph i QL์์ ์ฟผ๋ฆฌ๋ฅผ ์๋ํ์ญ์์ค.
"all"์ ์ ํ์ ๋ชจ๋ ๋ ธ๋๋ฅผ ์ฟผ๋ฆฌํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ๋ชจ๋๊ฐ ์์ผ๋ฉด ๋จ์ผ ํญ๋ชฉ์ ์ฟผ๋ฆฌํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.