1

我最近redux-api-middleware从 2.3.0 升级到 3.0.1 当我运行我的测试时,jest@22.2.1我得到了这个ReferenceError

ReferenceError: fetch is not defined

  19 | export function sortPolicyChain (payload: Array<ChainPolicy>): SortPolicyChainAction {
  20 |   return { type: 'SORT_POLICY_CHAIN', payload }
> 21 | }
  22 |
  23 | export type UpdatePolicyInChainAction = { type: 'UPDATE_POLICY_IN_CHAIN', policyConfig: ChainPolicy }
  24 | export function updatePolicyInChain (policyConfig: ChainPolicy): UpdatePolicyInChainAction {

  at Object.<anonymous> (node_modules/redux-api-middleware/lib/index.cjs.js:404:3)
  at Object.<anonymous> (app/javascript/src/Policies/actions/PolicyChain.jsx:21:27)
  at Object.<anonymous> (spec/javascripts/Policies/actions/PolicyChain.spec.jsx:3:20)

堆栈跟踪指向 PolicyChain.jsx中的这一行:

export function fetchChain (serviceId: string): RSSAAction {
  return {
    [RSAA]: {
      endpoint: `/admin/api/services/${serviceId}/proxy/policies.json`,
      method: 'GET',
      credentials: 'same-origin',
      types: [REQUEST, SUCCESS, FAILURE]
    }
  }
}

根据此处的文档

如果提供,则 fetch 选项必须是符合 Fetch API 的函数。否则,将使用全局提取。

但看起来无法找到全局提取。有任何想法吗?

代码库可以在github中找到。

4

2 回答 2

0

createMiddleware与您自己的 fetch 编译函数一起使用

https://github.com/agraboso/redux-api-middleware#createmiddlewareoptions

于 2020-01-17T10:06:01.030 回答
0

这是因为 Jest 在 Node.js 内部运行,它没有全局fetch(). 您可以通过安装isomorphic-fetch并将其添加到您的 Jest来解决此问题setupFiles

require('isomorphic-fetch');

于 2019-01-04T19:06:43.797 回答