使用Cypress和节点imap接收邮件的测试失败,缺少';净';模块

使用Cypress和节点imap接收邮件的测试失败,缺少';净';模块,cypress,node-imap,Cypress,Node Imap,我想使用Cypress中的node imap或NPM的imap包来检查是否收到了某些电子邮件并检查其内容 当我尝试从imap github和文档中获取的示例的基本副本时,它失败,出现以下错误: ./node_modules/imap/lib/Connection.js Module not found: Error: Can't resolve 'net' in '/Users/username/Documents/test-e2e/node_modules/imap/lib' resolve

我想使用Cypress中的node imap或NPM的imap包来检查是否收到了某些电子邮件并检查其内容

当我尝试从imap github和文档中获取的示例的基本副本时,它失败,出现以下错误:

./node_modules/imap/lib/Connection.js
Module not found: Error: Can't resolve 'net' in '/Users/username/Documents/test-e2e/node_modules/imap/lib'
resolve 'net' in '/Users/username/Documents/test-e2e/node_modules/imap/lib'
  Parsed request is a module
  using description file: /Users/username/Documents/test-e2e/node_modules/imap/package.json (relative path: ./lib)
    Field 'browser' doesn't contain a valid alias configuration
    resolve as module
      /Users/username/Documents/test-e2e/node_modules/imap/lib/node_modules doesn't exist or is not a directory
      /Users/username/Documents/test-e2e/node_modules/node_modules doesn't exist or is not a directory
      /Users/username/Documents/node_modules doesn't exist or is not a directory
      /Users/username/node_modules doesn't exist or is not a directory
      /Users/node_modules doesn't exist or is not a directory
      /node_modules doesn't exist or is not a directory
      looking for modules in /Users/username/Documents/test-e2e/node_modules/imap/node_modules
        using description file: /Users/username/Documents/test-e2e/node_modules/imap/package.json (relative path: ./node_modules)
          Field 'browser' doesn't contain a valid alias configuration
      looking for modules in /Users/username/Documents/test-e2e/node_modules
        using description file: /Users/username/Documents/test-e2e/package.json (relative path: ./node_modules)
          Field 'browser' doesn't contain a valid alias configuration
          using description file: /Users/username/Documents/test-e2e/node_modules/imap/package.json (relative path: ./node_modules/net)
            no extension
              Field 'browser' doesn't contain a valid alias configuration
          using description file: /Users/username/Documents/test-e2e/package.json (relative path: ./node_modules/net)
            no extension
              Field 'browser' doesn't contain a valid alias configuration
              /Users/username/Documents/test-e2e/node_modules/imap/node_modules/net doesn't exist
            .ts
              Field 'browser' doesn't contain a valid alias configuration
              /Users/username/Documents/test-e2e/node_modules/net doesn't exist
            .ts
              Field 'browser' doesn't contain a valid alias configuration
              /Users/username/Documents/test-e2e/node_modules/imap/node_modules/net.ts doesn't exist
            .js
              Field 'browser' doesn't contain a valid alias configuration
              /Users/username/Documents/test-e2e/node_modules/net.ts doesn't exist
            .js
              Field 'browser' doesn't contain a valid alias configuration
              /Users/username/Documents/test-e2e/node_modules/imap/node_modules/net.js doesn't exist
              /Users/username/Documents/test-e2e/node_modules/net.js doesn't exist
            as directory
              /Users/username/Documents/test-e2e/node_modules/imap/node_modules/net doesn't exist
            as directory
              /Users/username/Documents/test-e2e/node_modules/net doesn't exist
因此,无法运行任何测试。 我试着寻找这个“网络”,也和imap包结合在一起,但我真的找不到任何解决方案。
甚至可以将Imap与Cypress一起使用吗?

Cypress在浏览器中执行其代码。因此,您不能使用此类NPM模块。 要解决此问题,必须使用
cy.task
。Cypress在节点进程内执行任务,因此您可以使用任何所需的库。这些任务必须在插件文件中定义,因为该文件是在节点上下文中加载的

因此,您必须在
cypress.json
中告诉cypress您正在使用插件文件:

{
    ...
    "pluginsFile": "cypress/plugins/plugins.js",
    ...
  }
然后在
plugins.js
中定义一个任务:

on('task', {
    sendMail({ subject, to, body }) {
      return getEmail(subject, to, body);
    }
  });
getEmail
应该是您的示例代码

使用如下任务:

cy.task("sendMail", { subject, to, body }, { timeout: 30000 });