You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QWebEngineView使用顶级await报‘Unexpected reserved word’错误求解决方案

QWebEngineView不支持顶级await的解决方案

你遇到的情况是:HTML文件在本地服务器的浏览器中能正常运行,但Qt的QWebEngineView对JS里的顶级await代码报错Unexpected reserved word——尽管已经用type="module"引入脚本。这大概率是因为你所用的Qt版本对应的Chromium内核版本较低,尚未支持模块脚本中的顶级await特性(该特性在Chromium 89及以上版本才完全支持)。

以下是几种替代解决方案:

  • 方案1:将顶级await包装到自执行async函数中
    把原本写在顶级作用域的await代码,放入一个立即执行的async函数内,既保留异步逻辑,又避开顶级await的兼容性限制:

    // 原顶级await代码:
    // const res = await fetch('http://localhost:8080/api');
    // const data = await res.json();
    
    // 修改后:
    (async () => {
      const res = await fetch('http://localhost:8080/api');
      const data = await res.json();
      // 后续业务逻辑
    })();
    
  • 方案2:用Promise链式调用替代await
    若不想使用async函数,可改用传统的Promise链式写法,兼容性覆盖绝大多数支持Promise的环境:

    fetch('http://localhost:8080/api')
      .then(res => res.json())
      .then(data => {
        // 处理数据逻辑
      })
      .catch(err => {
        // 错误处理逻辑
      });
    
  • 方案3:升级Qt版本
    如果项目允许,升级到Qt 6.2及以上版本(对应Chromium 89+内核),即可原生支持模块脚本的顶级await特性,无需修改JS代码。

内容的提问来源于stack exchange,提问作者crends

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 14:01:42