无法在离线模式下使用gatsby网站

时间:2019-04-30 20:29:08

标签: offline gatsby

我已经建立了一个盖茨比网站,但是当我尝试离线使用它时(通过将index.html直接加载到我的浏览器中),它无法加载资产文件夹中的文件,并且链接到其他页面失败了

在Windows中运行: 安装gatsby之后,我执行了以下操作:

gatsby new sample
cd sample
gatsby build

然后我转到文件浏览器并打开sample / dist目录,然后双击index.html(Chrome是我的默认浏览器,但IE的行为相同)

结果是网页加载了一半,缺少样式表,javascript,图像和链接。

例如,首页上的“关于”链接指向“ D:/ about”与“。\ about.html”。

反正有什么方法可以使gatsby能够创建一个真正的离线网站?

3 个答案:

答案 0 :(得分:1)

尝试从项目的根目录使用gatsby serve。服务启动了Web服务器以服务您的产品构建。

在其站点上的Gatsby CLI文档中进行查找。

答案 1 :(得分:1)

  

我已经建立了一个盖茨比网站,但是当我尝试离线使用它时(通过将index.html直接加载到我的浏览器中),它无法加载资产文件夹中的文件,并且链接到其他页面失败了

Gatsby在构建时会为您创建一个React应用,并且由于大多数React应用都使用客户端路由,因此您的链接将无法使用file:// URL。

在安装Gatsby CLI并使用gatsby build构建站点之后,您应该运行gatsby serve,它将为index.html提供服务,并在您自己的计算机上为静态文件服务器提供服务。


查看有关create-react-app here

的类似答案

答案 2 :(得分:0)

不幸的是,盖茨比并没有真正做到这一点。这是一个 site 生成器,而不是 page 生成器,它期望驻留在服务器上。结果是,虽然文件是静态的,但导航不是

因为我花了一些时间进行实验,所以这是行不通的:

.中将gatsby-config.js设置为pathPrefix。 Gatsby可让您设置path prefix,然后它会附加到所有生成的URL中。不幸的是,这个前缀总是以某种方式被“绝对化”。例如,.被转换为/.

将磁盘上文件的绝对路径设置为pathPrefix。与上面相同-file:///path/to/file在构建过程中(结果file:/)和{{1 }}破坏了JavaScript。

将pathPrefix设置为伪造的值,例如/path/to/file,然后在生成的文件中进行搜索替换。再次破坏JavaScript。

我没有尝试过,但是可能会让您有所收获的事情是禁用“单页应用程序”功能。 It's possible, reportedly(或with this plugin?),但在任何地方都没有良好的分步说明。