我已经建立了一个盖茨比网站,但是当我尝试离线使用它时(通过将index.html直接加载到我的浏览器中),它无法加载资产文件夹中的文件,并且链接到其他页面失败了>
在Windows中运行: 安装gatsby之后,我执行了以下操作:
gatsby new sample
cd sample
gatsby build
然后我转到文件浏览器并打开sample / dist目录,然后双击index.html(Chrome是我的默认浏览器,但IE的行为相同)
结果是网页加载了一半,缺少样式表,javascript,图像和链接。
例如,首页上的“关于”链接指向“ D:/ about”与“。\ about.html”。
反正有什么方法可以使gatsby能够创建一个真正的离线网站?
答案 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?),但在任何地方都没有良好的分步说明。