gatsby - 使用 File System Route API 花括号以编程方式创建页面时,Gatsby 静态 HTML 构建错误
问题描述
运行时收到以下错误gatsby build
(gatsby develop
工作正常):
ERROR #95313
Building static HTML failed for path "/services/blog-post-1/"
这是我网站的结构:
- pages
- blog
- {mdx.slug}.js
- services
- {mdx.slug}.js
看来 gatsby 正在尝试使用我的/services/{mdx.slug}.js
模板构建我的博客文章降价文件之一。
我的 gatsby-config.js 看起来像这样:
{
resolve: `gatsby-source-filesystem`,
options: {
path: `${__dirname}/content/blog`,
name: `blog`,
},
},
{
resolve: `gatsby-source-filesystem`,
options: {
path: `${__dirname}/content/services`,
name: `services`,
},
},
{
resolve: `gatsby-plugin-mdx`,
...
这些是每个 {mdx.slug}.js 文件中的查询:
服务:
export const query = graphql`
query ($id: String) {
site {
siteMetadata {
title
author
}
}
mdx(id: {eq: $id}) {
frontmatter {
title
...
博文:
export const pageQuery = graphql`
query BlogPostById($id: String) {
site {
siteMetadata {
title
author
}
}
mdx(id: {eq: $id}) {
id
excerpt(pruneLength: 160)
...
正如我所说,该网站可以正常使用gatsby develop
,但gatsby build
会引发此错误。
任何想法将不胜感激。
解决方案
尽管谷歌搜索很多,但我可以解决这个问题的唯一方法是恢复使用Gatbsy Node APIcreatePages
扩展。
我是怎么做到的:
将我的旧 {mdx.slug}.js 文件移动到并分别
/src/templates/
重命名它们。service.js
blog-post.js
更新我的
gatsby-node.js
文件看起来像这样services
将我的和blog-post
模板中的查询更新为:export const pageQuery = graphql` query BlogPostById($slug: String!) { site { siteMetadata { title author } } mdx(slug: {eq: $slug}) { excerpt(pruneLength: 160) body frontmatter { title date(formatString: "MMMM DD, YYYY") description image { relativePath childImageSharp { gatsbyImageData( width: 1200 height: 675 placeholder: BLURRED ) } } } }`
推荐阅读
- node.js - 由于“错误:‘class v8::ObjectTemplate’没有名为‘SetAccessCheckCallbacks’的成员”,npm 安装失败
- heroku - 在 Heroku 中使用带有 HTTP2 支持的 actix-web
- ios - 我的位置没有显示在 MapKit 的地图上
- javascript - 如何从对象数组中提取特定数据并将其发布到 Firebase
- flutter - SimpleDialog Flutter 中的 Snackbar
- jenkins - 如何限制詹金斯的“存档工件”最大尺寸?
- c# - c#实体框架动态表
- virtualbox - Virtualbox - Tails - 无法打开磁盘映像文件
- c# - Task.FromResult 的代码如何使用
带功能 - java - JAVA:使用 IntelliJ IDEA 在 JSP 中显示 mysql 数据