因为SVG-Edit是一个如此独特和吸引人的程序,所以我多年来一直在寻找这个问题的答案,但已经干涸了。
经过一场重大的斗争,我能够通过安装Windows IIS,然后设置Web服务器等来使其工作。 然而,这远非理想。
是否有某种原因导致它不会(或不应该)在完全独立/离线模式下运行? 具体来说,我想做的是将GetHub zip文件解压缩到本地文件夹,然后在浏览器中打开"svg-editor.html"。 通常,这会生成一个空白窗口,或者(在某些以前的版本中)生成一个包含各种缺失项的窗口。
有一个竞争条件导致 svgedit 出错,在 Chrome 中加载file://
URL 时很明显,现在在 Github 上的master
分支中修复。
您将无法从file://
URL 本地加载svg-editor-es.html
-svg-editor-es.html
是依赖 ES6 模块加载其文件的原始源,但有问题,因为它们不允许在本地加载,导致控制台中显示原始错误),但svg-editor.html
文件(这是使用 svgedit 的向后兼容方式)在修复后现在似乎可以工作 - 至少对于一些基本功能,例如制作图纸。
但是,由于与file://
URL 的权限有限相关的限制,例如加载某些图像,某些功能可能无法工作。(我似乎记得浏览器以前阻止其目录或子目录之外的文件加载父目录中的文件,但现在此限制似乎不适用,尽管我看到一些关于 Ajax 无法加载 svgedit 尝试加载的图像的警告。
因此,即使使用上述最近的修复程序,也可能无法完全脱机工作,除非您选择禁用浏览器上的安全限制,这不应该轻易完成。但它似乎至少适用于一些基本图纸。
虽然我认为这可以解决您关于为什么没有服务器就无法工作的直接问题,但还有另一种"离线"工作的方法,尽管它最初需要服务器来提供文件,但可能允许 svgedit 存储应用程序文件以在下次您在浏览器中访问该 URL 时完全离线工作 - 并且不会遇到浏览器安全限制的问题。现在的浏览器甚至可以离线工作,即使从服务器提供服务(由称为"服务工作者"的东西完成 - 请参阅 https://caniuse.com/#feat=serviceworkers 支持此功能的浏览器)。
然而,服务工作者并不是那么容易拼凑在一起,尽管您应该能够通过 https://github.com/SVG-Edit/svgedit/issues/243 订阅该问题来跟踪这方面的任何未来进展(因为它已经是一个请求的功能),但目前没有人承诺实现这一点。希望有人会受到启发来实施这一点。
顺便说一下,如果你使用"npm"(安装Node时可用的工具)安装svgedit,svgedit有一个启动脚本,你可以从命令行调用它,npm start
从svgedit文件夹中,它将为你运行一个本地(Node)服务器,特别是一个简单的静态文件服务器,它只允许你从http
URL加载svgedit(即,http://localhost:8000/editor/svg-editor.html
或http://127.0.0.1:8000/editor/svg-editor.html
;如果您使用的是现代浏览器,您也可以使用 ES6 模块文件:http://localhost:8000/editor/svg-editor-es.html )--无需安装任何其他服务器。