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

TypeScript在Playwright evaluate回调中找不到ACC的解决方法

解决TypeScript搭配Playwright时ACC未定义的问题

当你在Playwright的page.evaluate中访问页面全局变量ACC时,TypeScript会报错找不到这个变量——因为TS编译时检查的是Node.js环境的类型,而ACC是浏览器上下文的全局变量,TS默认不知道它的存在。以下是几种解决方式:

1. 声明全局ACC的类型定义

在代码中添加全局变量的类型声明,让TypeScript识别window上的ACC属性:

// 全局类型声明
declare global {
  interface Window {
    ACC: {
      config: {
        CSRFToken: string;
      };
    };
  }
}

// 你的原代码(加上window.更明确)
const CSRFToken = await this.page.evaluate(() => {
  return window.ACC.config.CSRFToken;
});

这种方式能保留类型检查的优势,适合需要严格类型约束的场景。

2. 使用类型断言绕过检查

如果不需要完整的类型定义,用any断言快速解决TS的报错:

const CSRFToken = await this.page.evaluate(() => {
  return (window as any).ACC.config.CSRFToken;
});

这种方法简单直接,适合快速调试或临时场景。

3. 直接在evaluate中用字符串形式的代码(备选)

把evaluate的回调改成字符串,TS不会检查字符串内的代码:

const CSRFToken = await this.page.evaluate(`return ACC.config.CSRFToken`);

不过这种方式失去了TS的语法提示,仅作为特殊场景的备选方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:35:23