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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:50:11