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

如何在cypress.config.js中导入JS函数并解决ES模块导入报错

解决ES模块环境下Cypress配置文件导入CommonJS模块的问题

方案1:将email.js转换为ES模块导出

这是适配项目模块规范的长期解决方案,直接修改email.js的导出方式:

// email.js 修改后
const email_var = new emailClass();
export default email_var;

在cypress.config.js中使用ES模块的import语法导入:

// cypress.config.js
import email_var from './cypress/support/email.js';

export default defineConfig({
  // 其他Cypress配置项
  e2e: {
    // ...
  },
  afterRun() {
    // 调用目标函数
    email_var.email_func();
  }
});

方案2:使用动态import()加载CommonJS模块

如果不想修改email.js的代码,可以利用ES模块的动态import()特性(支持加载CommonJS模块),注意afterRun需要改为异步函数:

// cypress.config.js
export default defineConfig({
  // 其他Cypress配置项
  e2e: {
    // ...
  },
  async afterRun() {
    // 动态导入CommonJS模块
    const { default: email_var } = await import('./cypress/support/email.js');
    email_var.email_func();
  }
});

方案3:使用Node.js的createRequire API

通过Node.js内置的createRequire创建CommonJS风格的require函数,实现同步导入:

// cypress.config.js
import { createRequire } from 'module';
// 基于当前模块的URL创建require函数
const require = createRequire(import.meta.url);
const email_var = require('./cypress/support/email.js');

export default defineConfig({
  // 其他Cypress配置项
  e2e: {
    // ...
  },
  afterRun() {
    email_var.email_func();
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:21:36