electron 是否有一种方法来确保电子邀请/汇总使用绝对引用编译资产?

wqnecbli  于 2023-11-15  发布在  Electron
关注(0)|答案(1)|浏览(174)

详情

我正在写一个电子邀请应用程序,它使用react-router-dom作为路由,我将“renderer”文件夹部署到vercel,沿着vercel.json作为根目录。
现在,当我从根域开始导航时,应用程序工作正常,但一旦我将URL(例如https://example.com/app/transfers/id)复制到另一个选项卡,它只显示一个空白屏幕。
调查控制台,我可以看到它无法获得由rollup生成的捆绑js文件。
x1c 0d1x的数据
然后,当我检查出“源”选项卡,我可以看到这是因为它试图访问资产文件夹使用相对路径:

我知道这是问题所在,因为当我在开发人员工具中启用Local overrides,并手动删除路径前面的“.”时,一切都正常。



这是有意义的,因为我们应该在:https://example.com/assets/bundle.js而不是:https://example.com/app/transfers/id/assets/bundle.js处查找生成的bundle
我知道这可以很容易地通过切换到HashRouter而不是Browser Router来解决,事实上,我有代码可以在HashRouter和BrowserRouter之间切换,基于您是否在浏览器中运行电子应用程序。
但如果可能的话,我希望避免在浏览器中使用HashRouter。

我尝试过:

我知道vite基本路径配置选项。将其设置为/仍然不会产生好的结果(捆绑的html保持不变,无论我传递给base什么):

那么有没有其他的方法来解决这个问题,或者有没有一种方法来确保这些束总是在它们的绝对路径上被查找?

u2nhd7ah

u2nhd7ah1#

解决这个问题的方法就是在我的html head标签中放置一个base标签,如下所示:

<head>
  <meta charset="UTF-8" />
  <title>Electron</title>
  <base href="/" />
</head>

字符串
根据MDN(https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base):
HTML元素指定用于文档中所有相对URL的基本URL。一个文档中只能有一个元素。
脚本可以使用Node. baseURI访问文档所使用的基本URL。如果文档没有元素,则baseURI默认为location. href。
对于这种情况,这是一个完美的解决方案,因为问题是vite/rollup为我生成的JS和css包生成相对URL。
干杯

相关问题