- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将我的 Gatsby 站点迁移到 typescript 并遵循 official guide将 gatsby-node.js 更新为 .ts 文件。 js 文件工作正常,但 ts 文件不行。唯一的区别是:
exports.createPages
更改为 export const sourceNodes: GatsbyNode["createPages"]
import type { GatsbyNode } from "gatsby"
添加在顶部这是不起作用的 gatsby-node.ts。
import type { GatsbyNode } from "gatsby"
import path from "path"
export const sourceNodes: GatsbyNode["createPages"] = async ({ graphql, actions, reporter }) => {
const { createPage } = actions
const result:any = await graphql(`
query {
allMdx {
edges {
node {
id
slug
}
}
}
}
`)
if (result.errors) {
reporter.panicOnBuild('🚨 ERROR: Loading "createPages" query')
}
const posts = result.data?.allMdx.edges
posts.forEach(({ node }) => {
createPage({
path: `/work/${node.slug}`,
component: path.resolve(`./src/components/works-layout.tsx`),
context: { id: node.id },
})
})
}
以及有效的 gatsby-node.js:
import path from "path"
exports.createPages = async ({ graphql, actions, reporter }) => {
const { createPage } = actions
const result = await graphql(`
query {
allMdx {
edges {
node {
id
slug
}
}
}
}
`)
if (result.errors) {
reporter.panicOnBuild('🚨 ERROR: Loading "createPages" query')
}
const posts = result.data.allMdx.edges
posts.forEach(({ node }) => {
createPage({
path: `/work/${node.slug}`,
component: path.resolve(`./src/components/works-layout.tsx`),
context: { id: node.id },
})
})
}
这里是错误的编译报告:
warn The GraphQL query in the non-page component
"/Users/cindyho/portfolio/src/components/works-layout.tsx" will not be run.
Exported queries are only executed for Page components. It's possible you're
trying to create pages in your gatsby-node.js and that's failing for some
reason.
If the failing component(s) is a regular component and not intended to be a page
component, you generally want to use a <StaticQuery>
(https://gatsbyjs.com/docs/static-query)
instead of exporting a page query.
If you're more experienced with GraphQL, you can also export GraphQL
fragments from components and compose the fragments in the Page component
query and pass data down into the child component —
https://graphql.org/learn/queries/#fragments
最佳答案
您必须将 exports.createPages = () => {}
转换为 export const createPages = () => {}
。
当前您有 export const sourceNodes
,其中不会调用 createPage
操作。它必须发生在 createPages
生命周期中。
关于GatsbyJS - 如何使用 createPages 设置 gatsby-node.ts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72936382/
注意:感谢@Ferran Buireu 的建议。由于对 docker 非常陌生,并且将网络世界更改为系统和编程,我很肯定会得到负票。 部署gatsbyjs后,发现socketio错误“net::ERR
我是 gatsbyjs 的新手。遵循所有教程并开始使用 Saasland 模板使用 gatsbyjs 创建网站。我已经用 npm 安装了 bootstrap。该模板具有以下 vendor 特定的依赖项
我正在尝试在 Visual Studio 代码中调试我的 gatsbyjs 代码。我按照文档并尝试了稍微不同的方法,例如 https://github.com/Microsoft/vscode-rec
有人可以谈谈或将我链接到包发布策略背后的理由吗?我想知道为什么有这么多“仅版本提升”的版本,它使变更日志过于冗长并且 => 难以及时升级软件包。它还使版本差异变得更加困难。 例如https://git
我正在用 gatsbyjs 构建一个站点。就seo而言,我认为“onClick”是不可抓取的。所以也许有人可以帮助我。 我有这个: render={data => (
我的问题:我试图将 Gatsby 与 headless WordPress 集成并成功地做到了。我从 WordPress 动态制作了多个菜单,并通过 GraphQL 调用这些菜单。每件事似乎都运行良好
我如何为 Gatsby 创建一个将在客户端加载而不是在构建时加载的组件? 我创建了这个,它使用 gatsby develop 呈现,但不使用呈现的服务器端呈现 import React from 'r
我想要这样的路线:/blog/:blogId/:slug 我在我的 gatsby-node.js 中试过了 - exports.onCreatePage = async ({ page, action
我无法理解如何在 GatsbyJS 中为 GraphQL 查询编写过滤器。 这有效: filter: { contentType: { in: ["post", "page"] } 我基本上需要相反的
我正在尝试使用 Gatsby JS 和 Material UI 创建一个网站。存储网站内容的首选方式是什么。该网站将只是一个小型企业的宣传网站。 我是否只保留组件中的文本。或者我需要将它保存在单独的文
我在 GatsbyJS 中使用单页模板,菜单滚动到同一页面的不同部分(#home、#about、#portfolio 等)。有没有办法在链接上设置事件类名,突出显示用户所在的链接? 最佳答案 Link
因此,我在 Netlify 上托管了一个网站。我遵循了他们网站上的文档(关于表单),部署后表单的名称显示在我的 Netlify dash 上,但没有任何提交通过。 我可以帮忙吗? 这是我的 Conta
我希望托管一个 gatsbyjs 博客,该博客从 Contentful 中获取数据,类似于以下示例。 https://github.com/gatsbyjs/gatsby/tree/master/ex
我的目标是从本地插件创建页面。我写了一个名为 my-custom-plugin 的自定义插件。我还安装了 gatsby-plugin-page-creator 插件,以在默认 pages 目录之外自动
我正在使用 GatsbyJS,并且我正在尝试根据 URL 的路由呈现不同的 header。 示例: mydomain.com/ => 应呈现 HeaderLanding mydomain.com/bl
我正在使用 gatsby-plugin-styled-components 来设置下面元素的样式。 import React from 'react'; import styled from 'sty
我是 GatsbyJS 和 ReactJS 的新手,在构建项目时遇到问题。问题是每当我在其中构建带有 AOS 的项目时,它都会显示错误窗口未定义。当我在开发模式下运行时完全没问题。 这是我的代码: 我
我想在我的 gatsby 生成的网站中创建一个使用 slug 作为参数的路由。 我有一个位于路线 /projects/ 上的项目列表. 通常使用 react router 我会创建一个这样的路由:
我将 Strapi 用作 Headless CMS,并使用 Gatsby + Graphql 构建我的前端。我有一个“ block 渲染器”组件,用于渲染 strapi 中的任何动态区域。 impor
我处于一个有点不幸的位置,几年前某人的设计选择现在正在影响我重建网站。基本上,早在网站最初创建时,设计者就插入所有 URL 完全显式地使用 .html 扩展名(例如 website.com/index
我是一名优秀的程序员,十分优秀!