Playwright集成dotenv读取.env文件变量失败问题求助
Playwright集成.env环境变量时变量无法识别,输出undefined
项目目录结构
- PlayWrightSampleProject > node_module > src > env > .env.stage > .env.qa > package-lock.json > package.json > playwright.config.ts
当前配置与代码
playwright.config.ts 配置
require('dotenv').config(); dotenv.config({ path: './env/.env.${process.env.ENV}', });
.env.stage 文件内容
URL=https://sandboxrocket.nasa.co.uk userid=Admin1@rocket.co.uk password=Test@123
测试代码(loginSamplePage.spec.ts)
test("LoginPage_TestCase", async ({ page }) => { console.log(process.env.URL); console.log(process.env.userid); console.log(process.env.password); });
执行命令与结果
执行命令
PS C:\PlayWrightProject> $env:ENV="stage"PS C:\PlayWrightProject> npx playwright test loginTest.spec.ts
终端输出
Running 1 test using 1 worker [chromium] › loginTest.spec.ts:9:5 › LoginPage_TestCase undefined undefined undefined 1 passed (1.2s) To open the last HTML report, run: npx playwright show-report
问题排查与解决方案
核心问题
- 模板字符串语法错误:单引号无法解析变量,
${process.env.ENV}被当作字面量字符串,而非变量值。 - 路径错误:.env文件实际在
src/env目录下,但配置里写的是./env/,路径不匹配。 - 冗余的dotenv调用:第一行
require('dotenv').config()无意义,且可能干扰指定文件的加载。
修正后的playwright.config.ts
如果是ES模块:
import dotenv from 'dotenv'; dotenv.config({ path: `./src/env/.env.${process.env.ENV}` });
如果是CommonJS模块:
const dotenv = require('dotenv'); dotenv.config({ path: `./src/env/.env.${process.env.ENV}` });
额外优化(可选)
安装cross-env实现跨平台环境变量设置:
npm install cross-env --save-dev
在package.json中添加脚本:
"scripts": { "test:stage": "cross-env ENV=stage npx playwright test", "test:qa": "cross-env ENV=qa npx playwright test" }
之后直接执行npm run test:stage即可启动stage环境的测试,无需手动设置环境变量。
内容的提问来源于stack exchange,提问作者DarkShadows
相关产品推荐
相关产品推荐

