Cypress运行测试报process is not defined错误如何解决
Cypress 报错
process is not defined 解决方案 报错原因
process 是Node.js环境专属的全局对象,Cypress的测试逻辑运行在浏览器侧,默认没有注入该全局对象。当你的测试代码、引入的第三方依赖、或者被测前端应用代码中存在process.xxx的调用逻辑时,就会触发该报错。
你当前贴出的index.js中没有直接调用process的逻辑,可按照以下场景排查修复:
修复方案
场景1:被测前端应用代码使用了process
前端项目正常构建时会自动将process.env.xxx这类环境变量替换为静态值,如果Cypress访问的是未构建的源码、或者构建配置缺失环境变量替换逻辑,可以直接在Cypress支持文件(即你当前的index.js)最顶部手动挂载全局process对象:
// 写在所有导入语句的最前面 window.process = { env: { // 这里填入前端应用实际用到的环境变量即可,无特殊需求可默认写以下配置 NODE_ENV: 'development' } } // 原有代码保持不变 import './commands' Cypress.on('uncaught:exception', (err, runnable) => { return false })
场景2:测试代码/测试依赖使用了process
- 检查你的测试用例文件、
commands.js文件中是否存在直接调用process.xxx的逻辑,将对应逻辑替换为Cypress官方提供的环境变量读取方法Cypress.env()即可,例如将process.env.TEST_TOKEN修改为Cypress.env('TEST_TOKEN') cypress.config.js运行在Node环境,该文件中可以正常使用process,不需要修改
临时验证方案(不推荐长期使用)
如果需要临时验证问题是否和process相关,可以直接在报错的测试用例顶部添加以下代码:
window.process = window.process || { env: {} }
内容的提问来源于stack exchange,提问作者ChinS
相关产品推荐
相关产品推荐

