Chrome 89+需手动启用Top-Level Await:先在chrome://flags开启Developer Tools experiments并重启,再进DevTools Settings→Experiments(按Shift 6次显示)勾选Enable top-level await in Console,最后在Console中执行await Promise.resolve('hello')验证。

如果您在 Chrome 控制台中输入 await Promise.resolve(42) 却收到 Uncaught SyntaxError: await is not allowed in this context,说明当前 DevTools 控制台环境未启用 Top-Level Await 支持。Chrome 自 89 版本起已原生支持该特性,但需手动开启实验性标志。以下是启用此功能的具体步骤:
一、启用 DevTools 实验性功能入口
Top-Level Await 在 Chrome DevTools 控制台中属于受控实验性功能,必须显式开启才能使用。该功能不随浏览器版本自动激活,需用户主动配置。
1、在 Chrome 地址栏输入 chrome://flags 并回车访问实验性功能页面。
2、在页面顶部搜索框中输入 Developer Tools experiments。
3、找到对应条目,将其右侧下拉菜单由 Default 改为 Enabled。
4、点击页面右下角的 Relaunch 按钮,重启浏览器使设置生效。

二、开启控制台 Top-Level Await 专用开关
仅启用 Developer Tools experiments 不足以激活控制台中的顶层 await;还需进入 DevTools 设置内部开启具体子功能。该开关位于 Experiments 标签页内,且需触发隐藏模式才能显示。
1、重启后,打开任意网页,按 F12 或 Ctrl+Shift+I(Windows/Linux)或 Cmd+Option+I(macOS)打开 DevTools。
2、点击右上角三个点图标 → 选择 Settings(或直接按 ? → Settings)。
3、左侧导航栏切换至 Experiments 选项卡(若未显示,请先在该页面连续按 Shift 键 6 次 启用 WIP 功能)。
4、在 Experiments 列表中向下滚动,勾选 Enable top-level await in Console 选项。
5、关闭 Settings 窗口,无需重启 DevTools,该功能立即可用。
在 Linux 上通过 Chrome 挂载/VNC 自动发布小红书长笔记。Agent 撰写标题和正文后执行 xhs_publish.sh --publish --submit,触发小红书发布。

三、验证 Top-Level Await 是否生效
启用后,控制台将允许在全局作用域直接执行 await 表达式,无需包裹 async 函数。此能力严格限定于模块上下文模拟环境,与 HTML 中的 <script type="module"></script> 行为一致。
1、确保 DevTools 处于 Console 标签页。
2、输入并执行:await Promise.resolve('hello')。
3、若返回 'hello' 且无报错,则确认启用成功。
4、进一步测试异步请求:await fetch('/').then(r => r.status)(注意:跨域请求可能因 CORS 被拒绝,属正常现象)。

四、处理常见失败反馈
即使完成上述步骤,仍可能出现语法错误,原因多为运行环境未满足 ES 模块语义约束。DevTools 控制台的 Top-Level Await 实际模拟模块顶层执行,对上下文有隐式要求。
1、若提示 await is only valid in async functions and the top level bodies of modules,请确认未在 Snippets 或 Sources → Page → Console 的非模块上下文中执行。
2、避免在 Console Sidebar → Context 中选择了非默认执行上下文(如 iframe 或扩展内容脚本),应保持为 top。
3、禁用所有可能干扰 DevTools 行为的 Chrome 扩展(特别是代码注入类插件),并在隐身窗口中复现以排除干扰。
4、检查 Chrome 版本:在地址栏输入 chrome://version,确认版本号 ≥ 89.0.4389.0;低于此版本无法支持。










