javascript - 开 Jest - 引用错误 : imported function is not defined

标签 javascript node.js jestjs puppeteer referenceerror

我已经这样做了两个小时了,但无法弄清楚我做错了什么。我有以下 Jest + puppeteer 测试:

import {convert} from '../__helpers__/number';

const getAmount = async (page) => {
  const element = await page.waitForSelector('.my-element');

  return element.evaluate((node) => convert(node.innerText));
}

这非常简单直接。但它一直失败并出现以下错误:

Error: Evaluation failed: ReferenceError: _number is not defined
          at __puppeteer_evaluation_script__:2:15
          at ExecutionContext._evaluateInternal (node_modules/puppeteer/lib/ExecutionContext.js:122:13)
        -- ASYNC --
          at ExecutionContext.<anonymous> (node_modules/puppeteer/lib/helper.js:111:15)
          at ElementHandle.evaluate (node_modules/puppeteer/lib/JSHandle.js:55:42)
          at ElementHandle.evaluate (node_modules/puppeteer/lib/helper.js:112:23)
          at _callee$ (__tests__/e2e/test.spec.js:13:27)
          at tryCatch (node_modules/@babel/polyfill/node_modules/regenerator-runtime/runtime.js:45:40)
          at Generator.invoke [as _invoke] (node_modules/@babel/polyfill/node_modules/regenerator-runtime/runtime.js:271:22)
          at Generator.prototype.(anonymous function) [as next] (node_modules/@babel/polyfill/node_modules/regenerator-runtime/runtime.js:97:21)
          at asyncGeneratorStep (__tests__/e2e/test.spec.js:30:103)
          at _next (__tests__/e2e/test.spec.js:32:194)

上面的行号与源代码不匹配..并且从错误来看,它似乎是由于转译代码而失败。因此,我前往 jest-transform-cache 位置查看该文件,行号也不匹配;它们都偏离了 1。转译的代码也有更新的输出,并有以下行:

var _number = require('../__helpers__/number');

我尝试了所有我能想到的调试方式:

  • 清除缓存
  • 尝试重命名文件
  • 重新启动系统
  • 在不同的系统中运行测试
  • 在没有缓存等的情况下运行 jest

也尝试过这个:

// import {convert} from '../__helpers__/number';

const convert = (text) => magic(text); // for simplicity's sake

const getAmount = async (page) => {
  const element = await page.waitForSelector('.my-element');

  return element.evaluate((node) => convert(node.innerText));
}

现在失败并出现以下错误:

Evaluation failed: ReferenceError: convert is not defined

      at __puppeteer_evaluation_script__:2:15
      at ExecutionContext._evaluateInternal (node_modules/puppeteer/lib/ExecutionContext.js:122:13)
.
:

我想我会把它扔在这里看看是否还有其他人遇到这种奇怪的情况。按照任何标准,它都不应该失败,而且我根本无法弄清楚。请帮我!任何想法/方向将不胜感激。

谢谢!

最佳答案

您需要将转换函数作为 elementHandle.evaluate(pageFunction[, ...args]) 的参数传递像这样:

import {convert} from '../__helpers__/number';

const getAmount = async (page) => {
  const element = await page.waitForSelector('.my-element');

return element.evaluate((node, convert) => convert(node.innerText), convert);
}

关于javascript - 开 Jest - 引用错误 : imported function is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60217165/

相关文章:

unit-testing - lambda 函数 : TypeError: stripe_1. 默认值不是构造函数上的模拟 Stripe 失败

jestjs - Jest +NextJs : You should only use "next/router" on the client side of your app

javascript - 在循环内附加事件处理程序时浏览器性能出现问题

javascript - 在这种情况下如何使用 ng-mouseenter 删除类

javascript - 从 node.js 中的文件流中删除最后一个字符(fs 模块)

javascript - MeteorJS 获取图像宽度

reactjs - 使用 Jest 测试带有 Hooks 的 React 功能组件

javascript - 如何在 Node 4 中正确导出 ES6 类?

javascript - JS 对象键序列

node.js - 使用node.js、express、socket实现通知系统