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

在Cypress V10中集成music-metadata-browser插件遇阻求助

解决Cypress V10集成music-metadata-browser的问题

错误1:任务未在setupNodeEvents中处理

Cypress V10已废弃传统的plugin/index.js配置方式,所有Node端任务必须在cypress.config.js的setupNodeEvents方法中注册。

修复步骤:

  1. 删除原plugin/index.js中的任务注册代码。
  2. 在项目根目录的cypress.config.js中更新配置:
const { defineConfig } = require('cypress')

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      // 在此注册Node端任务
      on('task', {
        validateAudioFormat: (filePath) => {
          // 注意:不能直接使用music-metadata-browser,原因见下文
          // 处理本地文件请改用Node端的music-metadata库
          const mm = require('music-metadata');
          return mm.parseFile(filePath)
            .then(metadata => {
              // 编写你的格式校验逻辑
              return { valid: true, metadata };
            })
            .catch(err => {
              return { valid: false, error: err.message };
            });
        }
      });
    },
  },
})

错误2:cy.task('readAudioFiles')超时

music-metadata-browser是浏览器专属库,依赖浏览器的File、Blob等API,无法在Node.js环境(Cypress任务运行环境)中执行,强行调用会因无响应触发超时。

两种修复方案:

方案1:改用Node端的music-metadata库

若需处理本地音频文件,安装Node版本的库:

npm install --save-dev music-metadata

随后在setupNodeEvents的任务中使用该库(参考上方代码示例),通过文件路径读取本地文件并完成校验。

方案2:在浏览器端直接调用music-metadata-browser

若处理的是页面中上传的文件(如input[type="file"]选择的文件),直接在Cypress测试代码中调用库,无需通过cy.task:

// 在e2e/validateFile.cy.js中
import { parseBlob } from 'music-metadata-browser';

describe('Validate audio file', () => {
  it('checks uploaded audio format', () => {
    cy.get('input[type="file"]').selectFile('path/to/your/audio.mp3', { force: true });
    
    // 获取File对象并解析
    cy.get('input[type="file"]').then($input => {
      const file = $input[0].files[0];
      parseBlob(file).then(metadata => {
        // 编写格式校验逻辑
        expect(metadata.format.container).to.equal('MPEG');
      });
    });
  });
});

额外注意事项

  • 使用Node端任务处理文件时,确保文件路径为项目根目录的绝对路径,或在任务中拼接正确路径。
  • 异步任务必须返回Promise,Cypress会等待Promise完成后再继续执行流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:48:15