首页 > 解决方案 > 将 Web 应用程序转换为 Lorca 桌面应用程序时出现 404(未找到)错误

问题描述

背景

有一个https://threejs.org/editor/的 Web 应用程序,其源代码是 three.js 存储库的一部分:

https://github.com/mrdoob/three.js/tree/master/editor

我正在尝试将上述内容与Lorca一起使用来创建 Web 应用程序的桌面应用程序版本。

第一种方法

正如这里所建议的,我使用 Lorca反例作为基础。我在这个位置复制了反例:

/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)又得到了一些:

错误截图

可能的问题

可能问题在于内部的 Web 应用程序在three.js/editor整个three.js存储库中引用了一些文件。但是当为内部静态文件的 Go HTTP 服务器提供服务时three.js/editor,HTTP 服务器无法找到分散在three.js存储库中的内容three.js/editorthree.js存储库本身的内容所引用的所有外部文件。解决此类问题的最佳做法是什么?

标签: javascripthttpgohttp-status-code-404

解决方案


在此处保留 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 的 ThreeJS 编辑器运行良好:

ThreeJS 编辑器截图


推荐阅读