django Flutter Web:使用当前相对URL而不是基本HREF无法从main.dart.js正确加载资产

ef1yzkbh  于 2023-11-20  发布在  Go
关注(0)|答案(1)|浏览(118)

Django服务器上的Flutter Web App问题

我正在Ubuntu 20.2上使用Django Web服务器托管一个Flutter Web应用程序。我的Flutter版本是3.13.5,我的项目结构将Flutter Web项目放在“static”文件夹中,以允许Django托管此应用程序(所以它有点工作)。

问题描述:

我遇到一个问题,Flutter Web应用程序无法找到“FontManifest.json”文件。似乎正在使用当前URL(相对)而不是“index.html”中定义的基URL查找此文件。

具体内容:

从“index.html”加载的资源可以正确使用指向“static”目录的基href。但是,从“main.dart.js”加载的资源(基本上是具有所有逻辑的引擎)使用当前URL,从而在从那里引用静态资源时导致问题。

尝试次数:

我尝试直接通过“main.dart.js”获取丢失的文件“AssetManifest.bin”和“FontManifest.json”,但这不起作用。它似乎会中断其他静态资产的加载,并从“main.dart.js”中的外部API获取(甚至没有找到这些资产)。
在'index.html'中,我将基href更改为'static'文件夹。这修复了'index.html'中引用的资产(例如,'flutter.js')。然而,'main.dart.js'负责应用逻辑,仍然使用相对URI来获取内部资产,导致404 s。

寻求解决方案:

我正在寻找有关如何确保所有资产(包括'FontManifest.json')从'main.dart.js'加载的见解,'按预期使用基本URL。看起来Flutter应该提供一个配置选项,用于指定应用程序及其静态文件将托管的静态URI位置。我能想到的一个解决方案是使用Nginx将这些静态文件托管在托管Flutter应用程序的动态URI中,但我真的认为这是最后的手段。我认为静态路径应该在Flutter中配置。
有没有人遇到过类似的问题,或者找到了一个解决方案来确保一致的资产加载?

moiiocjp

moiiocjp1#

为了让构建的静态文件工作,你需要修改main.dart.js文件第569行,使用fetch来使用修改后的url,而不是它假设的相对url。

相关问题