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

无package.json单独使用Cypress报Cannot use import statement outside a module如何解决

无package.json场景下Cypress「Cannot use import statement outside a module」报错解决方案

问题复现背景

团队成员未配置package.json、IDE环境或相关框架,单独使用Cypress做e2e测试时抛出以下报错:

Cannot use import statement outside a module

关联测试代码

describe('Dummy', () => {
  before(() => {
    cy.visit(Cypress.env('baseURL'));
    cy.contains('Log in').click();
    cy.get('input[name="username"]').type('test user').should('have.value', 'test user');
    cy.get('input[name="password"]').type('test password').should('have.value', 'test password');
  });
});

测试可正常执行cy.visit、cy.contains两条命令,运行到输入用户名密码的代码行时触发报错。

可行解决方案

不需要新增/修改package.json,可任选以下一种方案操作:

  • 调整配置文件后缀:将Cypress根目录下的cypress.config.js重命名为cypress.config.cjs,强制Node.js以CommonJS规范解析配置文件,避免识别为ES模块
  • 调整测试/支持文件后缀:如果是测试文件或Cypress支持文件(默认路径为cypress/support/e2e.js)中存在import语句,直接将对应文件后缀从.js改为.cjs即可,不需要额外修改配置
  • 启动时指定Node.js模块规范:使用命令行启动Cypress时添加运行参数,Node.js 18及以上版本可执行以下命令:
    node --experimental-default-type=commonjs <Cypress执行路径> open
    
    全局安装Cypress的用户可直接替换为:
    node --experimental-default-type=commonjs $(which cypress) open
    

原因说明

报错本质是Node.js把相关JS文件识别为ES模块,但Cypress运行时默认按CommonJS规范加载依赖。前两条命令可正常执行是因为二者是Cypress内置原生命令,不需要加载用户自定义的JS文件,执行到后续命令时触发了自定义命令、支持文件等用户侧JS的加载,才触发模块规范不匹配的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:09:04