我建立了一个盖茨比网站,但是当我尝试离线使用它(通过直接将index.html加载到我的浏览器中时,它无法加载资产文件夹中的文件,并且指向其他页面的链接失败
在窗口中运行: 安装盖茨比后,我做了以下工作:
gatsby new sample
cd sample
gatsby build
然后我去了文件资源管理器并打开了 sample/dist 目录并双击索引.html(Chrome 是我的默认浏览器,但 IE 的行为相同)
结果是一个半加载的网页,缺少样式表,JavaScript,图像和链接已损坏。
例如,第一页上的"关于"链接指向"D:/about"与".\about.html"。
有没有办法让盖茨比努力创建一个真正的离线网站?
我建立了一个盖茨比网站,但是当我尝试离线使用它(通过直接将 index.html 加载到我的浏览器中时,它无法加载 assets 文件夹中的文件,并且指向其他页面的链接失败
Gatsby 会在构建时为你创建一个 React 应用程序,并且由于大多数 React 应用程序使用客户端路由,因此您的链接不适用于 file://URL。
安装 Gatsby CLI 并使用gatsby build
构建站点后,您应该运行gatsby serve
它将在您自己的机器上使用静态文件服务器提供index.html
。
在此处查看有关创建-反应-应用程序的类似答案
尝试使用项目根目录中的gatsby serve
。 服务启动一个 Web 服务器来提供您的生产构建。
在他们网站上的盖茨比 CLI 文档中查找它。
不幸的是,盖茨比并没有真正准备好这样做。它是一个站点生成器,而不是页面生成器,它期望存在于服务器上。结果是,虽然文件是静态的,但导航不是。
因为我花了一些时间进行实验,所以这是不起作用的:
在gatsby-config.js
中将.
设置为 pathPrefix 。Gatsby 允许您设置路径前缀,然后将其附加到所有生成的 url 之前。不幸的是,这个前缀总是以某种方式被"绝对化"。 例如,.
被转换为/.
。
将磁盘上文件的绝对路径设置为路径前缀。同上 -file:///path/to/file
无法在构建中存活(导致file:/
),并且/path/to/file
破坏了JavaScript。
将 pathPrefix 设置为虚假值(如/NOTAPREFIX
),并在生成的文件中搜索替换它。再次打破JavaScript。
我还没有尝试过但可能会让你到达某个地方的事情是禁用单页应用程序功能。据报道,这是可能的(或者也许使用这个插件?),但任何地方都没有好的分步说明。