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
相关产品推荐
相关产品推荐

