npm run build gatsby:“来自 page-data.json 的页面数据,用于失败页面“/404/”...”

拉斐尔

当 npm 构建我的 gatsby 项目时,我得到以下信息:

Page data from page-data.json for the failed page "/404/": {
  "componentChunkName": "component---src-pages-404-js",
  "path": "/404/",
  "result": {
    "pageContext": {}
  },
  "staticQueryHashes": []
}

failed Building static HTML for pages - 3.357s

 ERROR #95313 

Building static HTML failed for path "/404/"

See our docs page for more info on this error: https://gatsby.dev/debug-html


  21 |     };
  22 |     this.defaultAttributeTypes = {
> 23 |       position: 'Float32Array',
     | ^
  24 |       normal: 'Float32Array',
  25 |       color: 'Float32Array',
  26 |       uv: 'Float32Array'

我不知道是什么意思,通过搜索互联网,我找到了这个问题Page data from page-data.json for the failed page "/",我了解到这个错误可能是使用窗口对象引起的,所以我试图检查我的代码中的窗口使用,问题是我使用了反应三纤维,它可能正在使用这个文档对象,

然后,相同的答案表明可以通过向 gatsby-node.js 添加代码(我猜它没有说)来绕过这个错误,基本上是导出 onCreateWebpackConfig(在这个文件中,我正在导出 sourceNodes 和 onCreateWebpackConfig,希望这不会导致任何错误)

问题仍然存在。

我也有404页面

import React from "react";

const NotFoundPage = () => {
    return <div>Sorry, the page you requested was not found</div>;
};

export default NotFoundPage;

请任何提示,我真的不知道如何解决它

****** 编辑 ******

Ferran 向我询问我的 onCreateWebpackConfig,它是:

exports.onCreateWebpackConfig = ({ stage, loaders, actions }) => {
    if (stage === "build-html" || stage === "develop-html") {
        actions.setWebpackConfig({
            module: {
                rules: [
                    {
                        test: /react-three-fiber/,
                        use: loaders.null(),
                    },
                ],
            },
        });
    }
};

我输入了“test:/react-three-fiber/”,但我不确定,我应该输入“坏模块”,我不知道,我只知道我的组件

费兰·比雷乌

正如您所指出的,当您处理使用的第三方模块window或其他全局对象时,您需要在nullwebpack 配置中添加一个加载器,以绕过使用onCreateWebpackConfig. 在您的情况下,由于包名称是@react-three/fiber,请尝试以下操作:

exports.onCreateWebpackConfig = ({ stage, loaders, actions }) => {
  actions.setWebpackConfig({
    module: {
      rules: [
        {
          test: /@react-three\/fiber/,
          use: loaders.null(),
        },
      ],
    },
  });
};

请记住,这test是一个正则表达式(这就是为什么在斜杠之间,/)并且它与 . 下的文件夹名称匹配node_modules确保文件夹名称与正则表达式匹配。

回答配置 gatsby webpack 编译组件时不检查 window 等基础对象的重复性

但我也在组件中使用canvas,window.innerWidth和诸如此类的东西

如何设置另一个规则以指示 webpack 在检查组件时不抛出该错误?

对于第三方依赖项,您只需要继续将库添加到以前的null-loader 配置中:

exports.onCreateWebpackConfig = ({ stage, loaders, actions }) => {
  actions.setWebpackConfig({
    module: {
      rules: [
        {
          test: /@react-three\/fiber/,
          use: loaders.null(),
        },
        {
          test: /other-library/,
          use: loaders.null(),
        },
      ],
    },
  });
};

请记住我所说的,/other-library/代表里面的文件夹名称node_modules

对于window对象的内部使用,您只需要在使用它之前添加以下条件:

if(typeof window !== "undefined"){
  //your window calculation
}

根据您使用的时间和方式window,您可能不需要将其包装在这种情况下(即:如果您使用windowuseEffectDOM 加载之前不会触发的情况下将始终设置窗口)。

所有这些方法都可以在 Gatsby 文档中找到:https ://www.gatsbyjs.com/docs/debugging-html-builds/


顺便说一句,我在 gatsby-node.js 中有两个导出:exports.sourceNodes = async ({...对于我与 graphql 一起使用并exports.onCreateWebpackConfig =...在此处描述的数据,这有什么问题吗?

当然不是,只是一个文件导出功能。这就是它应该如何工作的方式,这就是为什么你有一堆可用的 API 的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自npm-run-build前端的Django中的静态文件抛出错误404

在 npm run build 的预渲染页面上获取 TypeError

由于docker build中的TypeScript错误,npm run build失败

“ npm run build”失败,并出现SyntaxError:Unexpected token

运行“npm run build”时出现 npm run build 错误

在`npm run build`时出错

如何运行`npm run build`

在Windows 7上运行npm start或npm run build时,skeleton-typescript-webpack失败

来自多级 Dockerfiles 的 `npm build` 和 `COPY --from` 失败,并显示 `COPY failed: stat /mnt/data/docker/overlay2/xxxxx/merged/app/build

“ npm r build”和“ npm run build”的区别?

frontend-maven-plugin运行npm run build时找不到package.json文件

只能从包含package.json文件的文件夹中运行“ npm run build”吗?

如何在package.json中添加变量npm run build

“ npm run build” =“反应脚本:权限被拒绝”

npm run build不使用代理

在 npm run build 之前检查 jshint 错误

什么是“ npm run -s build”中的“ -s”

如何从Symfony项目进行'npm run build'

npm run build in php Laravel 挂起或退出

npm run build生产不分配生产

npm install和npm run build有什么区别?

npm run build给出npm ERR!代码ELIFECYCLE

npm run build 失败:语法错误:TypeError:无法读取未定义的属性“parseComponent”

如何防止 npm run build 删除 build 中的目录

运行“ npm run build”后收到npm错误:npm ERR!代码ELIFECYCLE npm ERR!错误2

npm run dev和npm run build不同的苗条变量值

为什么CSS在`npm run dev`和`npm run build`之间渲染不同?

无法在我的React应用程序中运行'npm run build'/'npm run deploy'命令

`npm run build`不生成`index.html`