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

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);
});

执行命令与结果

执行命令

  1. PS C:\PlayWrightProject> $env:ENV="stage"
  2. 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

问题排查与解决方案

核心问题

  1. 模板字符串语法错误:单引号无法解析变量,${process.env.ENV}被当作字面量字符串,而非变量值。
  2. 路径错误:.env文件实际在src/env目录下,但配置里写的是./env/,路径不匹配。
  3. 冗余的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 14:30:58