将 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 下运行良好: