flutter 打包web项目 部署到内网

1,200 阅读1分钟

由于内网无法正常访问到谷歌相关资源站点,导致canvaskit.js和字体资源(fonts.gstatic.com)无法被加载,项目部署后显示白屏。

所以,通过修改资源引用地址,来解决这个问题:canvaskit.js相关资源是打包后就存在了的,但是项目没有进行引用,仍然会从网络获取,所以只需要更改下引用地址就好,字体资源使用镜像站解决。

①在项目的根目录的web目录下,新建flutter_bootstrap.js文件

{{flutter_js}}
{{flutter_build_config}}

const loading = document.createElement('div');
document.body.appendChild(loading);
loading.textContent = "Loading Entrypoint...";
_flutter.loader.load({
  config: {'canvasKitBaseUrl': 'canvaskit/'},
  serviceWorkerSettings: {
      serviceWorkerVersion: {{flutter_service_worker_version}},
  },
  onEntrypointLoaded: async function(engineInitializer) {
      loading.textContent = "Initializing engine...";
      const appRunner = await engineInitializer.initializeEngine({'fontFallbackBaseUrl': 'https://fonts.gstatic.cn/s/'});
      loading.textContent = "Running app...";
      await appRunner.runApp();
   }
});

②将index.html文件中flutter_bootstrap.js的引用方式改为下面的方式:

<script>
  {{flutter_bootstrap_js}}
</script>

至此,修改完成,可使用python3开启web服务进行验证!(python -m http.server 8000)

内网有时候,互联网都访问不到,那么可以将镜像站点改为本地的文件目录,比如将字体资源按照需要的路径放入一个文件夹内:

 const appRunner = await engineInitializer.initializeEngine({'fontFallbackBaseUrl': '/fonts/'});

参考资料:juejin.cn/post/748043…

参考资料:docs.flutter.cn/platform-in…