You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gatsby与Strapi通信报错#11321求助:sourceNodes生命周期异常

可行排查与解决步骤

1. 修复插件版本兼容性

gatsby-source-strapi@3.3.1适配的是Gatsby 4版本,和你当前使用的Gatsby 5存在兼容问题。卸载旧版本并安装适配Gatsby 5的最新版:

npm uninstall gatsby-source-strapi
npm install gatsby-source-strapi@latest

2. 校验Gatsby的Strapi配置

确保gatsby-config.js中的配置完全匹配Strapi的实际设置:

module.exports = {
  plugins: [
    {
      resolve: `gatsby-source-strapi`,
      options: {
        apiURL: process.env.STRAPI_API_URL || `http://localhost:1337`,
        accessToken: process.env.STRAPI_ACCESS_TOKEN,
        collectionTypes: [`post`, `category`], // 替换为你Strapi中实际创建的集合类型API ID
        singleTypes: [`home-page`], // 如有单类型需同步添加
        queryLimit: 1000,
      },
    },
  ],
}
  • apiURL必须和Strapi启动地址一致,默认端口为1337
  • accessToken需在Strapi后台Settings > API Tokens生成,至少赋予内容读权限
  • collectionTypes要和集合类型的API ID完全一致(而非显示名称)

3. 确认Strapi内容状态与API权限

  • 所有需要同步的集合类型条目必须点击Publish按钮发布,未发布内容不会通过API返回
  • 在Strapi后台进入对应集合类型的Settings > API Permissions,确认find权限已开启

4. 配置Strapi跨域策略

Gatsby开发环境(默认localhost:8000)可能被Strapi的CORS拦截:

  1. 进入Strapi后台Settings > Global Settings > Security > CORS
  2. 在Allowed origins中添加http://localhost:8000,临时测试可使用*(生产环境禁用)
  3. 保存配置后重启Strapi服务

5. 清理Gatsby缓存并重建

缓存残留可能导致配置不生效,执行以下命令:

gatsby clean
gatsby develop

重新打开GraphQL IDE(http://localhost:8000/___graphql),尝试查询Strapi节点:

query {
  allStrapiPost {
    nodes {
      title
      content
    }
  }
}

6. 排查依赖冲突

删除现有依赖文件后重新安装,避免版本冲突:

rm -rf node_modules package-lock.json
npm install

7. 分析详细错误日志

运行gatsby develop时,控制台会输出AxiosError的具体错误码(如401未授权、404地址不存在),针对性解决:

  • 401:检查accessToken的有效性与权限范围
  • 404:核对collectionTypes的API ID是否正确,或Strapi API路由是否正常
  • 500:查看Strapi控制台日志排查服务内部错误

内容的提问来源于stack exchange,提问作者jaegyo23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 13:16:05