将 Web 应用程序转换为 Lorca 桌面应用程序时出现 404(未找到)错误
404 (Not Found) errors when converting a web app into Lorca desktop app
背景
有一个 https://threejs.org/editor/ 的网络应用程序,其源代码作为 three.js 存储库的一部分:
https://github.com/mrdoob/three.js/tree/master/editor
我正在尝试将上述内容与 Lorca 结合使用来创建 Web 应用程序的桌面应用程序版本。
第一种方法
按照建议 here, I use the Lorca counter example 作为基础。我在这个位置复制了反例:
/home/m3/go/src/lorca-3d-editor
然后我在这个位置克隆 three.js:
/home/m3/repos/three.js
three.js 编辑将在:
/home/m3/repos/three.js/editor
现在,我将 Lorca 计数器示例源代码更改为这样,请注意 http.Dir()
正在设置绝对路径:
ln, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
log.Fatal(err)
}
defer ln.Close()
go http.Serve(ln, http.FileServer(http.Dir("/home/m3/repos/three.js/editor")))
ui.Load(fmt.Sprintf("http://%s", ln.Addr()))
提交差异为:
但我遇到了这些 404 (Not Found)
错误:
第二种方法
我在这里保留了一份 Lorca 计数器示例:
/home/m3/go/src/lorca-3d-editor
然后,我将整个 three.js 源代码复制到这里:
/home/m3/go/src/lorca-3d-editor/three.js
因此,Web 应用程序源代码位于:
/home/m3/go/src/lorca-3d-editor/three.js/editor
现在,我将 Lorca 计数器示例源代码更改为这样,请注意 http.Dir("three.js/editor")
设置的是相对路径:
ln, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
log.Fatal(err)
}
defer ln.Close()
go http.Serve(ln, http.FileServer(http.Dir("three.js/editor")))
ui.Load(fmt.Sprintf("http://%s", ln.Addr()))
现在我又得到了一些 404 (Not Found)
:
可能的问题
问题可能在于 three.js/editor
中的 Web 应用程序引用了整个 three.js
存储库中的某些文件。但是,当在 three.js/editor
中为静态文件的 Go HTTP 服务器提供服务时,HTTP 服务器无法找到分散在 three.js
存储库中的所有外部文件,这些文件由 three.js/editor
的内容或 [= 的内容引用23=] 存储库本身。解决此类问题的最佳做法是什么?
在此处保留 Lorca 计数器示例的副本:
/home/m3/go/src/lorca-3d-editor
此外,将整个 three.js 源代码保存在:
/home/m3/go/src/lorca-3d-editor/three.js
因此,Web 应用程序源代码位于:
/home/m3/go/src/lorca-3d-editor/three.js/editor
现在,问题通过这样的提交解决了:
现在 ThreeJS 编辑器在 Lorca 下运行良好:
背景
有一个 https://threejs.org/editor/ 的网络应用程序,其源代码作为 three.js 存储库的一部分:
https://github.com/mrdoob/three.js/tree/master/editor
我正在尝试将上述内容与 Lorca 结合使用来创建 Web 应用程序的桌面应用程序版本。
第一种方法
按照建议 here, I use the Lorca counter example 作为基础。我在这个位置复制了反例:
/home/m3/go/src/lorca-3d-editor
然后我在这个位置克隆 three.js:
/home/m3/repos/three.js
three.js 编辑将在:
/home/m3/repos/three.js/editor
现在,我将 Lorca 计数器示例源代码更改为这样,请注意 http.Dir()
正在设置绝对路径:
ln, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
log.Fatal(err)
}
defer ln.Close()
go http.Serve(ln, http.FileServer(http.Dir("/home/m3/repos/three.js/editor")))
ui.Load(fmt.Sprintf("http://%s", ln.Addr()))
提交差异为:
但我遇到了这些 404 (Not Found)
错误:
第二种方法
我在这里保留了一份 Lorca 计数器示例:
/home/m3/go/src/lorca-3d-editor
然后,我将整个 three.js 源代码复制到这里:
/home/m3/go/src/lorca-3d-editor/three.js
因此,Web 应用程序源代码位于:
/home/m3/go/src/lorca-3d-editor/three.js/editor
现在,我将 Lorca 计数器示例源代码更改为这样,请注意 http.Dir("three.js/editor")
设置的是相对路径:
ln, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
log.Fatal(err)
}
defer ln.Close()
go http.Serve(ln, http.FileServer(http.Dir("three.js/editor")))
ui.Load(fmt.Sprintf("http://%s", ln.Addr()))
现在我又得到了一些 404 (Not Found)
:
可能的问题
问题可能在于 three.js/editor
中的 Web 应用程序引用了整个 three.js
存储库中的某些文件。但是,当在 three.js/editor
中为静态文件的 Go HTTP 服务器提供服务时,HTTP 服务器无法找到分散在 three.js
存储库中的所有外部文件,这些文件由 three.js/editor
的内容或 [= 的内容引用23=] 存储库本身。解决此类问题的最佳做法是什么?
在此处保留 Lorca 计数器示例的副本:
/home/m3/go/src/lorca-3d-editor
此外,将整个 three.js 源代码保存在:
/home/m3/go/src/lorca-3d-editor/three.js
因此,Web 应用程序源代码位于:
/home/m3/go/src/lorca-3d-editor/three.js/editor
现在,问题通过这样的提交解决了:
现在 ThreeJS 编辑器在 Lorca 下运行良好: