Playwright中global-setup.ts出现Unexpected strict mode reserved word错误
问题原因
这个错误是因为Node.js执行global-setup.ts时,把它当成了CommonJS模块处理,识别不了ES模块的import语法。Playwright的全局设置文件如果用TypeScript编写,得确保它能被正确编译,或者当前环境支持ES模块/TypeScript的执行规则。
解决方案
按优先级尝试下面几种方法:
1. 给项目开启ES模块支持
在package.json里添加"type": "module"字段,明确告知Node.js当前项目使用ES模块:
{ "name": "playwright-demo", "version": "1.0.0", "main": "index.js", "type": "module", // 新增这一行 "license": "MIT", "devDependencies": { "@playwright/test": "^1.47.2", "@types/node": "^22.7.2" }, "scripts": {}, "dependencies": { "env-common": "file:../env-common" } }
同时检查tsconfig.json(没有的话就新建一个),确保模块配置匹配:
{ "compilerOptions": { "module": "ESNext", "target": "ES2020", "moduleResolution": "NodeNext", "esModuleInterop": true } }
2. 把全局设置改成CommonJS格式
如果不想切换ES模块,直接把global-setup.ts改成用CommonJS的require语法:
const ZogBeEnv = require('env-common/src/env').default; async function globalEnvSetup() { const testEnv = ZogBeEnv.configureDotEnv(); } module.exports = globalEnvSetup;
3. 确保外部依赖env-common已编译
如果env-common是未编译的TypeScript项目,得先把它编译成JavaScript再引入。在env-common的package.json里加编译脚本:
{ "scripts": { "build": "tsc" }, "main": "dist/env.js", // 指向编译后的文件 "types": "dist/env.d.ts" }
执行yarn build后,主项目里改成直接引入包:
import ZogBeEnv from 'env-common';
4. 让Playwright用ts-node处理TS文件
在playwright.config.ts里,把globalSetup的路径改成ts-node执行的形式:
import { defineConfig } from '@playwright/test'; export default defineConfig({ globalSetup: 'ts-node ./global-setup.ts', // 其他原有配置... });
记得先装依赖:
yarn add -D ts-node typescript
验证方法
改完之后重新跑yarn playwright test,看错误是否消失。要是还不行,试试清掉依赖重新装:
rm -rf node_modules yarn.lock yarn install
内容的提问来源于stack exchange,提问作者Rok
相关产品推荐
相关产品推荐

