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

dotenv无法读取.env文件求助(Playwright项目环境)

解决Playwright项目中dotenv无法读取.env文件的问题

问题描述

Playwright项目中,dotenv无法读取根目录下的.env文件。该文件确实存在,但无论配置相对路径还是绝对路径都无法识别,却能读取文件夹内其他文件。已尝试dotenv.config({path:'relative path'})和dotenv.config({path:'absolute path'})两种方式,通过npx playwright test命令运行项目。

项目目录结构

root:
modules
playwright-report
pupputeer
test-results
tests
.env
example.spec.ts
login.test.ts
tests-examples
.gitignore
package-lock.json
package.json
playwright.config.ts

相关代码

login.test.ts

import dotenv from 'dotenv';
dotenv.config({ path: './tests/.env' });
import { firefox, test } from "@playwright/test";

test("Login test demo", async () => {
const browser = await firefox.launch();
const context = await browser.newContext();
const page = await context.newPage();

      console.log(process.env);
    
      await page.goto("https://ecommerce-playground.lambdatest.io/");
      await page.hover("//a[@data-toggle='dropdown']//span[contains(.,'My account')]");
      await page.click("text=Login");
    
      // await page.fill("input[name='email']", );

});

playwright.config.ts

import type { PlaywrightTestConfig } from "@playwright/test";

const config: PlaywrightTestConfig = {
   use: {
      headless: false
   },
   
   testMatch: ["tests/login.test.ts"]
}

export default config;

package.json

{
   "type": "commonjs",
   "name": "scrape",
   "version": "1.0.0",
   "main": "index.js",
   "scripts": {
      "start": "ts-node tests-examples/demo-todo-app.spec.ts"
   },
   "keywords": [],
   "author": "",
   "license": "ISC",
   "description": "",
   "devDependencies": {
      "@playwright/test": "^1.46.1",
      "@types/node": "^22.5.0"
   },
   "dependencies": {
      "dotenv": "^16.4.5",
      "ts-node": "^10.9.2"
   }
}

解决方案

1. 修正.env路径配置

你的代码中指定的路径./tests/.env与实际目录不符,.env文件在项目根目录而非tests文件夹下。修改login.test.ts中的路径:

// 相对路径方式
dotenv.config({ path: './.env' });

// 更可靠的绝对路径方式(推荐)
import dotenv from 'dotenv';
import path from 'path';
dotenv.config({ path: path.resolve(__dirname, '../.env') });

2. 排查文件本身问题

  • 确认.env文件没有被误命名(例如.env.txt或.env.old),确保文件名就是.env
  • 检查文件权限:在Linux/macOS系统中执行chmod 644 .env赋予可读权限

3. 全局加载dotenv(推荐)

在playwright.config.ts中提前加载.env,确保所有测试文件都能获取到环境变量,避免每个测试文件重复配置:

import type { PlaywrightTestConfig } from "@playwright/test";
import dotenv from 'dotenv';
import path from 'path';

// 加载根目录下的.env文件
dotenv.config({ path: path.resolve(__dirname, '.env') });

const config: PlaywrightTestConfig = {
   use: {
      headless: false
   },
   
   testMatch: ["tests/login.test.ts"]
}

export default config;

4. 验证环境变量加载情况

不要直接打印整个process.env,而是打印具体的环境变量名,方便确认是否加载成功:

// 替换成你.env中实际的变量名
console.log('测试环境变量:', process.env.YOUR_VARIABLE_NAME);

内容的提问来源于stack exchange,提问作者Ryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:39:56