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

如何用AVA分别以ES模块和CommonJS模块运行前后端.js测试?

用AVA分别测试ES模块前端与CommonJS后端的方案

完全可以针对前后端分别以对应模块模式运行测试,AVA支持通过配置管道实现这种差异化测试,具体步骤如下:

1. 拆分测试文件目录

将前后端测试文件分开存放,避免混淆:

  • tests/frontend/:存放前端ES模块相关的测试文件
  • tests/backend/:存放后端CommonJS相关的测试文件

2. 配置AVA多测试管道

在项目根目录创建ava.config.js(采用CommonJS格式,因为项目未设置"type": "module"),配置两个独立的测试管道:

module.exports = {
  pipelines: {
    // 后端CommonJS测试配置
    backend: {
      files: ['tests/backend/**/*.test.js'],
      nodeArguments: ['--no-warnings'],
      // 无需额外转译,默认以CommonJS模式加载文件
    },
    // 前端ES模块测试配置
    frontend: {
      files: ['tests/frontend/**/*.test.js'],
      nodeArguments: ['--no-warnings', '--experimental-modules'],
      require: ['@babel/register'],
      extensions: { js: 'module' },
      babel: true
    }
  }
};

3. 配置Babel处理前端ES语法

创建babel.config.json,让Node能识别前端的ES模块语法:

{
  "presets": [
    ["@babel/preset-env", {
      "targets": { "node": "current" }
    }]
  ]
}

4. 添加npm测试脚本

在package.json中添加命令,方便单独或统一运行测试:

{
  "scripts": {
    "test:backend": "ava --pipeline=backend",
    "test:frontend": "ava --pipeline=frontend",
    "test": "npm run test:backend && npm run test:frontend"
  }
}

额外提示

  • 后端测试无需特殊转译,AVA会默认以CommonJS模式加载(因项目未设置"type": "module"),管道配置仅用于限定测试范围。
  • 若前端测试的是webpack/babel构建后的产物,可直接以CommonJS模式加载构建文件,省去Babel转译步骤,进一步简化配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:20:44