Gatsby Build停留在为页面构建静态HTML

时间:2019-07-02 21:33:46

标签: reactjs build terminal gatsby production

我正在尝试将我的Gatsby项目构建到生产文件中。运行Gatsby构建命令时,该过程将运行并停留在“为页面构建静态html”

端子:

$('#myModal').modal('toggle');

它保持运行状态,而不会引发错误并停止。我创建了一个盖茨比启动器,并运行了相同的命令,并在大约30秒内完成了构建。是什么导致我的网站无法建设?

1 个答案:

答案 0 :(得分:1)

这里的问题是,在“服务器端”,例如,当Gatsby静态呈现页面时,它们在没有“窗口”或“文档”概念的环境中运行,因此,虽然此处的代码在浏览器中运行时可能会起作用,但此处失败。

一个简单的技巧是在if语句中包装所有需要有文档的东西

if(typeof(document) !== 'undefined') { ... }(或您的首选)。

还有一些可用于包装页面大块的组件,例如React NoSSR,它的工作方式如下:

import React from 'react';
import NoSSR from 'react-no-ssr';
import MyChart from './MyChart.jsx';

const MyChartPage = () => (
  <div>
    <h2>My Chart Page</h2>
    <hr />
    <NoSSR>
      <MyChart />
    </NoSSR>
  </div>
);

在服务器端呈现此内容时,NoSSR规则将忽略呈现,并且需要document的代码仅在客户端运行。