Apollo-link-rest: "рд╣реЗрдбрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ" рд╡реЗрдХреНрд╕рд┐рди рдорд┐рдиреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рд░реЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣реЛрддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдЬреБрд▓ре░ 2019  ┬╖  25рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: apollographql/apollo-link-rest

  • [x] рд╣реИ-рдкреНрд░рдЬрдирди

рдЬрдм рд╣рдо рд╡реАрдХреНрд╕рд┐рди рдорд┐рдиреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рд░реЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рдиреАрдЪреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреА рд╣реИ:

 Headers is not defined 
 ReferenceError: Headers is not defined

рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ RestLink.ts рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдорд┐рд▓рд╛ рд╣реИ, рдпрд╣ рд╣реЗрдбрд░ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ Weixin рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рддрд╣рдд рдХреЛрдИ рд╣реЗрдбрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИрдХ рдпрд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдЕрдЧрд░ рдЖрдк рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдзрдиреНрдпрд╡рд╛рджред

help wanted ЁЯЫа questionтЭФ

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣рд╛рдБ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ:

import clientFetch from 'unfetch';
import serverFetch, { Headers as ServerHeaders } from 'node-fetch';

const client = typeof document !== 'undefined';
global.Headers = client ? global.Headers : ServerHeaders;
const customFetch = client ? clientFetch : serverFetch;

const acmeLink = new JsonApiLink({
  тАж
  credentials: 'same-origin',
  customFetch,
});

рд╕рднреА 25 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдп @ рдЬреЗрдирд┐рд╕ 1114 , рдореИрдВ

рдЕрдХреНрд╕рд░, рдпрджрд┐ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИрдВ, рддреЛ рдлрд╝реЗрдЪ рднреА рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред рддреЛ рдПрдХ рдкреЙрд▓реАрдлрд┐рд▓ рдЬреЛ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ: https://github.com/bitinn/node-fetch

рд╣рд╛рдп @fbartho , рдЖрдкрдХреЗ рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдлрд╝реЗрдЪ рд╣реЗрдбрд░ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВред

рдФрд░ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╡реАрдХреНрд╕рд┐рди рдХреЗ рддрд╣рдд, рдпрд╣ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП wx.request рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рдВрдбреЛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдкреЙрд▓реАрдлрд┐рд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдФрд░ рдХреНрдпрд╛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рд░реЗрд╕реНрдЯ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рд╣реЗрдбрд░ рд▓реВрдк рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╣реИрдХ рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдЧрд╛? рдпрд╛ рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдХреБрдЫ рдХрд╕реНрдЯрдо рд╡рд┐рдХрд▓реНрдк рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?

рдЖрдк рдПрдХ рд░реИрдкрд░ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЛрд▓реЛрд▓рд┐рдВрдХрд░реЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП customFetch рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд░реИрдкрд░ рдлрд╝рдВрдХреНрд╢рди рдкреЙрд▓реАрдлрд╝рд┐рд▓ рд╕реЗ рд╡рд┐рдВрдбреЛ-рдЖрдзрд╛рд░рд┐рдд-рд╣реЗрдбрд░ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрд╢ рдореЗрдВ рдлрд╝реНрд▓реИрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХреБрдЫ (рдЕрдирдЪрд╛рд╣реЗ, рдореЗрд░реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ):

function customFetch(url, options) {
   const headers = options.headers.entries().reduce((accumulator, h) => { accumulator[h[0]] = h[1];  return accumulator;}, {})
   return fetch(url, {тАжoptions, headers});
}
// Elsewhere: new RestLink({ customFetch, ...

рдЖрдкрдХреА рдХреГрдкрдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВ рдЗрд╕ рдкреЙрд▓реАрдлрд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реЗрдХреНрд╕рд┐рди рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ RestLink.ts рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдкрдврд╝рд╛ рд╣реИ, рдпрд╣ рд╣реЗрдбрд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛, рдЬреЛ рдХрд┐ рд╡реАрдХреНрд╕рд┐рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдпрд╣ global рдореЗрдВ рдЪрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рддреЛ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдХрд╕реНрдЯрдо рдпрд╛ рдУрд╡рд░рд░рд╛рдЗрдб рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рд░реЗрд╕реНрдЯрд▓рд┐рдВрдХ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ?

рдЖрдкрдХреЗ рдЗрддрдиреЗ рд╢рд╛рдирджрд╛рд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд╢реБрднрдХрд╛рдордирд╛рдПрдБред

рд╣рд╛рдп @fbartho рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╡реЗрдХреНрд╕рд┐рди рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдиреАрдЪреЗ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛ рд╣реИ:
рд╣реЗрдбрд░реНрд╕ рдЗрд╢реНрдпреВ рдлрд┐рдХреНрд╕

рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдкреАрдЖрд░ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рд▓рдп рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ рдпрд╛ рдирд╣реАрдВ
рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдФрд░ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж рдЕрдЧрд░ рд╡рд╣ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ "next": "^9.0.3" рдореЗрдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ

рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг ^8.1.0 рд╕рд╛рде рднреА рдЖ рд░рд╣реА рд╣реИред рдореЗрд░реЗ рдЧреНрд░рд╛рдл рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдореИрдВ isomorphic-unfetch , рд╕рдВрд╕реНрдХрд░рдг ^3.0.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЙрд▓реАрдлрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ:

import fetch from 'isomorphic-unfetch'
const graphLink = createHttpLink({ uri, fetch })

рд▓реЗрдХрд┐рди рдмрд╛рдХреА рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдкреЙрд▓реАрдлрд┐рд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓рд╛:

const restLink = new RestLink({
  uri,
  customFetch: fetch,
})

рдореИрдВрдиреЗ рдЖрдкрдХреА рдХрд╕реНрдЯрдордлрд╝реЗрдЪ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ node-fetch рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА:

import fetch from 'node-fetch'

function customFetch(url, options) {
  const headers = options.headers.entries().reduce((accumulator, h) => {
    accumulator[h[0]] = h[1]
    return accumulator
  }, {})
  return fetch(url, { ...options, headers })
}

const restLink = new RestLink({
  uri: CONTENTFUL_CONTENT_DELIVERY_API,
  customFetch,
})

рджреЗрд╡ рдореЛрдб рдореЗрдВ рдЖрдЧреЗ рдЪрд▓рдиреЗ рдкрд░ рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореБрдЭреЗ ReferenceError: Headers is not defined рдорд┐рд▓рд╛ред

рдпрд╣рд╛рдВ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ, рдЕрдЧрд░ рдЖрдк рд╕рд░реНрд╡рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд┐рд╢рд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

рдЖрдк рдЕрднреА рднреА рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╕реНрдЯрдордлрд╝реЗрдЪ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╣реЗрдбрд░ рдПрдкреАрдЖрдИ рдХреЛ рдкреЙрд▓реАрдлрд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рд╡рд╣рд╛рдВ рдХреБрдЫ рдирдореВрдирд╛ рдХреЛрдб рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд░реЗрд╢рд╛рдиреА рдХреЗ рдмрд┐рдирд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдореИрдВ рдЗрд╕ рдорд┐рдирдЯ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдирд╣реАрдВ рд╣реВрдВред

@fbartho рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдореМрдХрд╛ рд╣реЛ рддреЛ рдХреБрдЫ рдирдореВрдирд╛ рдХреЛрдб рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛! рдореИрдВрдиреЗ рдЙрд╕ рдкрд░ рд╡рд╛рд░ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖред рдзрдиреНрдпрд╡рд╛рдж!

import * as Polyfillheaders from 'fetch-headers'
import fetch from 'isomorphic-unfetch'

// hook in the Headers polyfill for your environment!
global.Headers = global.Headers || Polyfillheaders;

function customFetch(url, options) {
  const headers = options.headers.entries().reduce((accumulator, h) => {
    accumulator[h[0]] = h[1]
    return accumulator
  }, {})
  return fetch(url, { ...options, headers })
}

const restLink = new RestLink({
  uri: CONTENTFUL_CONTENT_DELIVERY_API,
  customFetch,
})

рдКрдкрд░ рдЬреИрд╕рд╛ рдХреБрдЫ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ @ 2wheelcoder

рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдЗрд╕реЗ рдПрдХ рд╢реЙрдЯ рджреЗрдиреЗ рдХрд╛ рдореМрдХрд╛ рдорд┐рд▓рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рдпрд╣рд╛рдВ рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реВрдВрдЧрд╛ред

@fbartho рд╣рд╛рдп! рдореИрдВ рдЖрдИрдУрдПрд╕ 9.3.5 рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ fetch-headers рдкреЙрд▓реАрдлрд┐рд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ fetch-headers рд╕реЗ рд╣реЗрдбрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЗрдВ forEach рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред
image

рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рдЙрдкрд╛рдп рд╣реИ?

@fbartho рд╣рд╛рдп! рдореИрдВ рдЖрдИрдУрдПрд╕ 9.3.5 рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ fetch-headers рдкреЙрд▓реАрдлрд┐рд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ fetch-headers рд╕реЗ рд╣реЗрдбрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЗрдВ forEach рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред
image

рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рдЙрдкрд╛рдп рд╣реИ?

рдореИрдВрдиреЗ рдлрд╝реЗрдЪ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред

рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдРрдк-рд╕рд╛рдЗрдб рдкрд░ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЛ рдЗрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдореИрдВ рдЗрд╕реЗ рдкреЙрд▓реАрдлрд┐рд▓ рдХреЗ рд╕рд╛рде рд╣рд▓ рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЖрдЗрд╕реЛрдореЛрд░реНрдлрд┐рдХ-рдлрд╝реЗрдЪ, рдЖрдЗрд╕реЛрдореЛрд░реНрдлрд┐рдХ-рдЕрдирдлрд╝реЗрдЪ, рдлрд╝реЗрдЪ-рд╣реЗрдбрд░ рдЗрддреНрдпрд╛рджрд┐ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ current.forEach рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ TypeError: Right-hand side of 'instanceof' is not an object рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдХреЛрдИ рдорджрдж?

@VinSpee рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдЗрд╕ рдлрд╝реЗрдЪ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред

@lintuming рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@VinSpee рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рдпрд╣ , рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рд╡реЗ forEach рд╡рд┐рдзрд┐ред
image
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдоред

@lintuming рдорджрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЙрд╕ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ:

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЙрд▓рдЭрд╛ рд╣реБрдЖ рдЬрд╛рд▓ рд▓рдЧрддрд╛ рд╣реИ

@VinSpee рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
https://stackoverflow.com/questions/7042340/error-cant-set-headers-after-the-are-sent-to-the-client

рдпрд╣рд╛рдБ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ:

import clientFetch from 'unfetch';
import serverFetch, { Headers as ServerHeaders } from 'node-fetch';

const client = typeof document !== 'undefined';
global.Headers = client ? global.Headers : ServerHeaders;
const customFetch = client ? clientFetch : serverFetch;

const acmeLink = new JsonApiLink({
  тАж
  credentials: 'same-origin',
  customFetch,
});

@VinSpee рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖред
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рдХрд╛рдордХрд╛рдЬреА рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдзрдиреНрдпрд╡рд╛рдж @VinSpee- рдпрд╣ рд╡рд╣реА рдерд╛ рдЬреЛ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдП рдерд╛

рдореИрдВ рдХрд╕реНрдЯрдо рднреНрд░реВрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

import fetch from "isomorphic-fetch"

const restLink = new RestLink({
  uri: "https://...",
  customFetch: fetch,
  headers: {
    "Content-Type": "application/json",
  },
})

@VinSpee рдХреЗ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП Gatsby JS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд┐рдпрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ssuvorov picture ssuvorov  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

joemphilips picture joemphilips  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Daniel-Griffiths picture Daniel-Griffiths  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lextas picture lextas  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

i-Hun picture i-Hun  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ