Netlify Gatsby 构建错误,本地构建正常。

3

昨天以及过去的数月里,通过Contentful添加博客文章并触发Netlify的构建钩子一切正常。今天添加新的Blogg文章,通过Netlify的构建钩子就无法工作了。当在本地运行gatsby develop或gatsby build时,一切都能正常工作,并且新的博客文章也在那里。

以下是Netlify上的错误信息: error "gatsby-node.js" threw an error while running the createPages lifecycle: 7:19:16 PM: Reducers may not dispatch actions:

enter image description here

  • 已尝试通过Netlify上的"清除缓存并部署站点"按钮来清除缓存
  • 已尝试gatsby clean、npm install以及通过GitHub触发部署

不确定如何确认缓存是否被清除,下一步应该尝试什么。有任何想法吗?

创建页面:

const Promise = require('bluebird');
const path = require('path');

exports.createSchemaCustomization = ({ actions }) => {
  const { createTypes } = actions;
  const typeDefs = `
    type ContentfulHeroBanner implements Node {
      headerLeft: String
      headerCenter: String
      headerRight: String
    }
  `;
  createTypes(typeDefs);
};

exports.createPages = ({ graphql, actions }) => {
  const { createPage } = actions;

  return new Promise((resolve, reject) => {
    const blogPost = path.resolve('./src/templates/blog-post.js');
    resolve(
      graphql(
        `
          {
            allContentfulBlogPost {
              edges {
                node {
                  title
                  slug
                }
              }
            }
          }
        `
      ).then(result => {
        if (result.errors) {
          console.log(result.errors);
          reject(result.errors);
        }

        const posts = result.data.allContentfulBlogPost.edges;
        posts.forEach((post, index) => {
          createPage({
            path: `/blog/${post.node.slug}/`,
            component: blogPost,
            context: {
              slug: post.node.slug,
            },
          });
        });
      })
    );
  });
};

不知道你的项目代码,很难说。你能把 gatsby-node.jscreatePages 的内容发出来吗? - ehrencrona
@ehrencrona,将此文件添加到问题中。虽然它已经好几个月没有被修改了。 - Patrik Rikama-Hinnenberg
好的,在这里找到了一些有趣的信息:https://community.netlify.com/t/support-guide-debugging-netlify-site-builds/142。看起来如果我不使用yarn.lock文件,我可以将其删除。 - Patrik Rikama-Hinnenberg
1个回答

3

我成功解决了问题。我刚刚尝试删除yarn.lock文件,虽然我不相信这会有帮助。但在将此删除yarn.lock提交推送到主分支后,它触发了我的构建,并且这个没有yarn.lock的Git仓库强制Netlify依赖于在构建中安装NPM模块,并忘记关于Yarn的一切。

这篇文章对我很有帮助:https://community.netlify.com/t/support-guide-debugging-netlify-site-builds/142

关于缓存还有一些神秘的事情。


2
我曾经遇到过非常类似的情况,也出现了相同的构建错误,但我的 Gatsby 存储库中没有包含 yarn.lock 文件,但它确实包含了 package-lock.json。我提交了一个删除 package-lock.json 的 commit,然后触发了 Netlify 构建成功。谢谢。 - Rich Tillis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接