代码之家  ›  专栏  ›  技术社区  ›  josemigallas

Redux API中间件throws fetch未定义

  •  0
  • josemigallas  · 技术社区  · 6 年前

    我最近升级了 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)
    

    stacktrace指向此行 保险单 :

    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]
        }
      }
    }
    

    根据 documentation here :

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

    但似乎找不到全局获取。有什么想法吗?

    代码库位于 github .

    1 回复  |  直到 6 年前
        1
  •  0
  •   alex    6 年前

    这是因为jest在node.js内部运行,而node.js没有全局的 fetch() . 您可以通过安装来修复此问题 isomorphic-fetch 把这个加进你的笑话里 setupFiles :

    require('isomorphic-fetch');