- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我在 Netlify 上构建时,我在 404 页面上收到一个文档未定义构建错误,但构建在我的本地计算机上成功运行。我也没有在我的页面中引用任何文档或窗口对象。
我尝试删除 404 页面,但相同的错误出现在列表的下一页。
这是我的 404 页面
import React from "react";
import styled from "styled-components";
import AniLink from "gatsby-plugin-transition-link/AniLink";
const Container = styled.div`
width: 100vw;
height: 100vh;
margin: 0;
padding: 0;
background: black;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 800;
color: white;
`;
const Heading = styled.h1`
font-family: "URWAccidalia";
font-size: 50px;
color: white;
text-align: center;
z-index: 805;
`;
const HomeButton = styled(AniLink)`
font-family: "URWAccidalia";
font-size: 30px;
color: white;
text-align: center;
margin-top: 50px;
z-index: 806;
background: none;
border: none;
text-decoration: none;
opacity: 1;
`;
const ErrorPage = () => {
return (
<Container>
<Heading>Page Not Found</Heading>
<HomeButton fade to="/">
Go Back to Home
</HomeButton>
</Container>
);
};
export default ErrorPage;
2:20:59 PM: success Generating image thumbnails — 850/850 - 162.737 s
2:21:07 PM: error #95313 ReferenceError: document is not defined
2:21:07 PM: Building static HTML failed for path "/404/"
2:21:07 PM: See our docs page for more info on this error: https://gatsby.dev/debug-html
2:21:07 PM:
2:21:07 PM: ReferenceError: document is not defined
2:21:07 PM:
2:21:07 PM: - render-page.js:21018 Object
2:21:07 PM: /opt/build/repo/public/render-page.js:21018:21
2:21:07 PM:
2:21:07 PM: - react-dom-server.node.production.min.js:26 ya
2:21:07 PM: [repo]/[react-dom]/cjs/react-dom-server.node.production.min.js:26:264
2:21:07 PM:
2:21:07 PM: - react-dom-server.node.production.min.js:29 Object.useState
2:21:07 PM: [repo]/[react-dom]/cjs/react-dom-server.node.production.min.js:29:82
2:21:07 PM:
2:21:07 PM: - react.production.min.js:23 useState
2:21:07 PM: [repo]/[react]/cjs/react.production.min.js:23:312
2:21:07 PM:
2:21:07 PM: - render-page.js:21017 ./node_modules/react-three-fiber/dist/index.js.Object
2:21:07 PM: /opt/build/repo/public/render-page.js:21017:76
2:21:07 PM:
2:21:07 PM: - react-dom-server.node.production.min.js:33 c
2:21:07 PM: [repo]/[react-dom]/cjs/react-dom-server.node.production.min.js:33:501
2:21:07 PM:
2:21:07 PM: - react-dom-server.node.production.min.js:36 Sa
2:21:07 PM: [repo]/[react-dom]/cjs/react-dom-server.node.production.min.js:36:1
2:21:07 PM:
2:21:07 PM: - react-dom-server.node.production.min.js:41 a.render
2:21:07 PM: [repo]/[react-dom]/cjs/react-dom-server.node.production.min.js:41:467
2:21:07 PM:
2:21:07 PM: - react-dom-server.node.production.min.js:41 a.read
2:21:07 PM: [repo]/[react-dom]/cjs/react-dom-server.node.production.min.js:41:58
2:21:07 PM:
2:21:07 PM: - react-dom-server.node.production.min.js:53 renderToString
2:21:07 PM: [repo]/[react-dom]/cjs/react-dom-server.node.production.min.js:53:83
2:21:07 PM:
2:21:07 PM: - render-page.js:563 Module../.cache/static-entry.js.__webpack_exports__.defau lt
2:21:07 PM: /opt/build/repo/public/render-page.js:563:28
2:21:07 PM:
2:21:07 PM: - render-html.js:35 Promise
2:21:07 PM: [repo]/[gatsby]/dist/utils/worker/render-html.js:35:36
2:21:07 PM:
2:21:07 PM: - debuggability.js:313 Promise._execute
2:21:07 PM: [repo]/[bluebird]/js/release/debuggability.js:313:9
2:21:07 PM:
2:21:07 PM: - promise.js:488 Promise._resolveFromExecutor
2:21:07 PM: [repo]/[bluebird]/js/release/promise.js:488:18
2:21:07 PM:
2:21:07 PM: - promise.js:79 new Promise
2:21:07 PM: [repo]/[bluebird]/js/release/promise.js:79:10
2:21:07 PM:
2:21:07 PM: - render-html.js:31 Promise.map.path
2:21:07 PM: [repo]/[gatsby]/dist/utils/worker/render-html.js:31:37
2:21:07 PM:
2:21:07 PM:
2:21:07 PM: Skipping functions preparation step: no functions directory set
最佳答案
Short answer: Gatsby pre-renders components on build to serve them statically (mimics Server-side Rendering). Be sure to access browser context variables, such as
document
, only when your component is mounted (client-side). You can use a combination of useState and useEffect hooks to achieve this.
document
构建时的全局变量,仅在浏览器上下文中可用。
document
变量,如您所见
here .尝试延迟 AniLink 或父组件的实例化。
const ErrorPage = () => {
const [canRender, setCanRender] = useState(false);
useEffect(() => setCanRender(true));
return (
<Container>
{
canRender ?
<div>
<Heading>Page Not Found</Heading>
<HomeButton fade to="/">
Go Back to Home
</HomeButton>
</div>
: null
}
</Container>
);
}
document
静态渲染的组件中的浏览器上下文变量,您可以将其替换为 react 钩子(Hook)以避免在构建时出现问题。
const Page = () => {
return (
<div>
{
document.querySelector('nav')
? `This is page has a nav tag`
: `This page doesn't have a nav tag`
}
</div>
);
}
const Page = () =>
const [hasNavTag, setHasNavTag] = useState(false);
useEffect(() => setHasNavTag(document.querySelector('nav') != null) );
return (
<div>
{
hasNavTag
? `This is page has a nav tag`
: `This page doesn't have a nav tag`
}
</div>
);
}
关于Gatsby 构建错误 "document is not defined"仅在 Netlify 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57777138/
我在自己的服务器上托管我的网站,并使用 Netlify CMS。但是,我仍然希望使用 Netlify 的托管 Identity 和 Git 网关服务,而不是运行我自己的服务。 最佳答案 是的,这是可能
我正在使用 Netlify主持github repo并试图找到一种方法来在域上托管其他文件。 (如果您不知道 Netlify 是什么,请查看它。据我所知,它是 AWS 代码部署的快速脏版和免费版本。(
我正在使用 Netlify主持github repo并试图找到一种方法来在域上托管其他文件。 (如果您不知道 Netlify 是什么,请查看它。据我所知,它是 AWS 代码部署的快速脏版和免费版本。(
Netlify 子域基于存储库上的分支工作。如果我有一个域名 xyz.com 和 repo Repo-A,master 分支将部署到 xyz.com 和 dashboard 分支将部署到 dashbo
我想根据环境代理到不同的 api - 我尝试了以下主题的一些变体,但没有任何运气。如果可能的话,正确的方法是什么? [build.environment] API_URI="https://dev
根据 Netlify docs for custom headers我可以创建一个路径来使用自定义 header # use these headers for the /index.html fil
根据 Netlify docs for custom headers我可以创建一个路径来使用自定义 header # use these headers for the /index.html fil
我正在尝试将我的 Hugo 网站上传到 Netlify,但在构建过程中出现 命令失败,退出代码 255: hugo 错误。由于这是我自己手工编码的东西,我确信我在这个过程中遗漏了一些重要的文件,这会导
正如标题所说,部署到 Netlify 失败,从日志来看可能是我的 parcel.js设置。日志中的错误是: 12:19:29 AM: Error running command: Build scri
我正在尝试使用 Netlify CMS 和 Hugo ssg 来头脑清醒。 我使用: netlify-cms@1.0 hugo@0.29 我有一个简单的 netlify-cms config.yml,
我在我的 gatsby 项目中设置了 netlify 函数,具有代理等功能。如果我通过 netlify 部署,一切都会按预期进行。如果我使用 gatsby cloud 进行另一次部署它实际上从 net
免责声明:我会使用 a.) Netlify 上的某种支持系统,b.) Netlify 实时聊天 session 或 c.) 通过他们的支持社区来提问,但是a.) 他们不允许你,b.) 他们没有,c.)
Netlify 社区经常提出的另一个问题。 “Netlify 能否在不强制使用 SSL (TLS) 的情况下将流量从 http 重定向到 https?” Once you have a certifi
我有一个像这样的 _redirects 文件: https://example.netlify.com/* https://example.com/:splat 301! 在根文件夹中。 如何使用 g
是否有人幸运地使用 OAUTH 从 Netlify CMS 向 GB 进行身份验证,但没有使用 Netlify API?如果有的话,你用的是什么?我想使用我的域进行身份验证,但我不确定应该使用哪个 A
问题让 .env 在 Netlify 上工作。 我的仓库在这里: nuxt-axios-sheets 我在浏览器控制台中得到 key=undefined:加载资源失败:服务器响应状态为400 () 这
我认为标题是不言自明的。可以在这里找到存储库: https://github.com/netlify/netlify-cms/ https://github.com/netlify/git-gatew
我正在尝试使用 netlify 来托管静态站点。我正在使用 wget -mk http://hostname/ 构建网站所以我得到了大量的静态文件,并重写了链接。 我想将他们推到 netlify 并让
我正在尝试部署我的 nextjs 应用程序 netlify,但它一直向我抛出失败错误,没有部署这是我的 github 存储库 https://github.com/farishelmipermana/
我正在尝试部署我的 nextjs 应用程序 netlify,但它一直向我抛出失败错误,没有部署这是我的 github 存储库 https://github.com/farishelmipermana/
我是一名优秀的程序员,十分优秀!