【问题标题】:How do I write (flutter web) code so JavaScript files will run on my local machine?如何编写(flutter web)代码,以便 JavaScript 文件可以在我的本地机器上运行?
【发布时间】:2020-08-28 20:02:58
【问题描述】:

我构建了一个简单的 Flutter Web 应用。它在 github.io 和 localhost 服务器上运行良好:

$ flutter run -d chrome

如果我创建发布版本:

$ flutter build web

将应用程序(基本上)转换为 JavaScript 文件 (main.dart.js),为什么我不能通过加载创建的 index.html 文件来运行应用程序?

我浏览器中的 JavaScript 调试器告诉我这段代码:

<script>
    if ('serviceWorker' in navigator) {
      window.addEventListener('load', function () {
        navigator.serviceWorker.register('flutter_service_worker.js');
      });
    }
  </script>

产生错误:

Uncaught (in promise) TypeError: ServiceWorkerContainer.register: Script URL's scheme is not 'http' or 'https'

我不确定这意味着什么或如何解决它。我知道这不是在flutter_service_worker.js前面加上http那么简单。

【问题讨论】:

  • service worker js文件的路径是什么?
  • @Ameer 和 index.html 在同一目录下。
  • 尝试放置“./flutter_service_worker.js”,看看是否能解决问题
  • 看看这个答案stackoverflow.com/questions/39136625/…。 Service Worker 无法在本地打开,我相信它们必须通过 http 或 https 打开
  • 我打赌你是对的。如果你把它写成回复,我可以接受它作为答案。

标签: javascript flutter dart


【解决方案1】:

我认为问题在于您通过file 协议在本地打开 index.html 文件。根据this SO answer,服务工作者需要通过httphttps 协议打开。这就是为什么 index.html 文件可以在您的本地服务器和 github.io 上运行,但当您通过 chrome 或其他浏览器打开它时却不行。

【讨论】:

    猜你喜欢
    • 2011-03-19
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多