Nuxt рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдореЗрдореЛрд░реА рд▓реАрдХ SSR (рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ) рдХрд╛ рдЙрдкрдпреЛрдЧ

рд╣реЗрд▓реЛ, рд╣реЗрдмреНрд░! рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рдкрдврд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Nuxt рдХреЗ рд╕рд╛рде Vue SSR рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ред рдпрд╣ axios рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ ред

рдкреГрд╖реНрдарднреВрдорд┐


рдЖрдзреЗ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдПрдХ VueJS + Nuxt рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдорд┐рд▓рд╛, рдЗрд╕рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рдереА рдХрд┐ рдиреЛрдб рд╕рд░реНрд╡рд░ (Nuxt) рд▓рдЧрд╛рддрд╛рд░ рдареЗрд╕ рдореЗрдВ рдорд░ рд░рд╣реЗ рдереЗ рдФрд░ рдЙрдирдХреА рдЬрдЧрд╣ рдирдП рд▓реЛрдЧ рдЙрда рд░рд╣реЗ рдереЗред рдЧреНрд░рд╛рдлрд╝ рдФрд░ рд▓реЙрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдерд╛ рдХрд┐ рдиреЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдСрдкрд░реЗрдЯрд┐рд╡ 100% рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рдФрд░ рдпрд╣ рдореЗрдореЛрд░реА рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЧрдпрд╛ред рдЗрд╕ рд╕рдордп, рдорд╛рд░реЗ рдЧрдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рдирдпрд╛ рдЙрда рд░рд╣рд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрднрдЧ 30 рд╕реЗрдХрдВрдб рд▓рдЧреЗ, рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ 502 рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдерд╛ рдЬрд┐рд╕реЗ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдореИрдВ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХреЛ рддреБрд░рдВрдд рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдкрдврд╝рдиреЗ рд╕реЗ рдЖрдкрдХреЗ рд╕рднреА рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ:

  1. рд╡рд┐рд╖рдп рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛
  2. рдПрдХреНрд╕рд┐рд╕ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░
  3. runInNewContext

1. рд╡рд┐рд╖рдп рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛


рдкрд╣рд▓реА рдмрд╛рдд, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдореЗрдВ рд╕реЗ рдХрдИ рдХрд░реЗрдВрдЧреЗ, рдореИрдВрдиреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░ рджреА, рдореЗрд░реЗ рдкреНрд░рд╢реНрди рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗ : NodeJS рдореЗрдореЛрд░реА рд▓реАрдХ , рдиреНрдпреВрдХреНрд╕реНрдЯ рдореЗрдореЛрд░реА рд▓реАрдХ , рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдиреНрдпреВрдХреНрд╕реНрдЯ рдореЗрдореЛрд░реА рд▓реАрдХ рдЖрджрд┐ред

рдмреЗрд╢рдХ, рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдмреАрд╕ рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдиреЗ рднреА рдореЗрд░реА рдорджрдж рдирд╣реАрдВ рдХреА, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдХреНрд░реЛрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЗрдореЛрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХреИрд╕реЗ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП: // рдирд┐рд░реАрдХреНрд╖рдгред рдореЗрд░реА рдирд┐рд░рд╛рд╢рд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ 90% рд╕рднреА рдореЗрдореЛрд░реА рдЬреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╕рд╛рдл рдирд╣реАрдВ рдХреА рдЧрдИ рдереА, рд╡реЗ рдХреБрдЫ рд░реЗрдВрдбрд░ рдХреА рддрд░рд╣ рдереАрдВ рдЬреИрд╕реЗ рд░реЗрдВрдбрд░рдХрдВрдкреЛрдиреЗрдВрдЯ, рд░реЗрдВрдбрд░рдПрдореЗрдВрдЯ, рдФрд░ рдЕрдиреНрдпред



1. рдЕрдХреНрд╖реАрдп рдЕрд╡рд░реЛрдзрдХ


рд╣рдо рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдореЗрд░реА рдкреАрдбрд╝рд╛ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ рдФрд░ рддреБрд░рдВрдд рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдХрд┐ axios.interceptors рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рджреЛрд╖реА рд╣реИрдВ (рдореБрдЭреЗ рдорд╛рдл рдХрд░рдирд╛, Habr, рджреЛрд╖реА рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП)ред

рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ axios рдЗрд╕ рддрд░рд╣ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:

import baseAxios from 'axios';

const axios = baseAxios.create({
  timeout: 10000,
});


export default axios;

рдФрд░ рдЗрд╕ рддрд░рд╣ рдЖрд╡реЗрджрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рдВрд▓рдЧреНрди:

import axios from './index';

export default function(context) {

  if(!context.axios) {
    context.axios = axios;
  }
}

  • рд▓реАрдХ рдХреА рдПрдХ рд▓рдВрдмреА рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рд╕рднреА axios.interceptors рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдореЗрдореЛрд░реА рд╕рд╛рдлрд╝ рд╣реЛрдиреЗ рд▓рдЧрддреА рд╣реИред
  • рдмрд╛рдд рдХреНрдпрд╛ рд╣реИ?
  • рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╣реИ рдЬреЛ рд╕рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЛ рдПрдХ рдЙрддреНрддрд░ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП) рдпрд╛ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдЬреЛрдбрд╝рдиреЗ рдФрд░ 1 рдЬрдЧрд╣, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рд╣реИ рдирд╛? рдпрд╣ рдХреИрд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИ (рдлрд╝рд╛рдЗрд▓ 'рдкреНрд▓рдЧрдЗрдиреНрд╕ / axios / рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ред рдЬреЗрдПрд╕') рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ

export default function({ axios }) {

  const interceptor = axios.interceptors.response.use( (response) => {
    return response;
  }, function (error) {
    //-   ,  
    return Promise.reject(error);
  });

}

рдФрд░ рдпрд╣реАрдВ рд╕реЗ рдорд╕реНрддреА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рд╣рдо nuxt.config.js рдореЗрдВ рдкреНрд▓рдЧ рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ

  plugins: [
    { src: '~/plugins/axios/bindContext' },
    { src: '~/plugins/axios/interceptor' },
  ]

рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдирдП рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ nuxt рд╕рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ nuxtServerInit рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╣реЛрддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдПрдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдХрд╣реАрдВ-рдХрд╣реАрдВ рд╣рдорд╛рд░реЗ рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд╕рдбрд╛рдЯрд╛ рдпрд╛ рд▓рд╛рдиреЗ рдореЗрдВ рд╣рдо рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдо рджреВрд╕рд░рд╛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдХреЛрдб 2 рдмрд╛рд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ!

рдЕрдкрдиреЗ рд╢рдмреНрджреЛрдВ рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рдмрдирд╛рдКрдВрдЧрд╛ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ 5 рдмрд╛рд░ рдЗрдВрдбреЗрдХреНрд╕ рдкрд░ рджрд╕реНрддрдХ рджреЗрддрд╛ рд╣реИред



рд╣рдо рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ 15 рдХреЙрд▓ рд╣реБрдИ рд╣реИрдВ, рдФрд░ рдпрд╣ 1 + 2 + 3 + 4 + 5 рд╣реИ, рдореИрдВрдиреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓рд┐рдпрд╛ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдЪреБрдиреМрддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдереЗред

рд╕реНрдХреВрд▓ рд╕реЗ, рд╣рдо рд╕рднреА рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдкреНрд░рдЧрддрд┐ рдХреЗ рд╕реВрддреНрд░ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ 1 рд╕реЗ n рддрдХ рдХреЗ рдпреЛрдЧ рдХреЛ n * (n + 1) / 2. рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЬрдм 1000 рд╡рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп 1000 рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдХреБрд▓ рдореЗрдВ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдзрд╛ рдорд┐рд▓рд┐рдпрди рдХреЙрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд▓реЛрдб рдордзреНрдпрдо рдпрд╛ рдЙрдЪреНрдЪ рд╣реИ, рддреЛ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рдкрд░ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рди рд╣реЛрдВред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди


рдпреБрдкреАрдбреАред рд╕рдорд╛рдзрд╛рди # 0 - рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрдЪреНрдЫреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИрдВред

рд╕рдорд╛рдзрд╛рди # 1 - axios.interceptors рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред

рд╕рдорд╛рдзрд╛рди рдирдВрдмрд░ 2 - рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЖрдкрдХреЛ рдЕрдХреНрд╖реАрдп рдкреНрд░рд▓реЗрдЦрди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд, рдЕрдкрдиреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

export default function({ axios }) {

  const interceptor = axios.interceptors.response.use( (response) => {
    
    if(process.server) {
      axios.interceptors.response.eject(interceptor);
    }
    
    return response;
  }, function (error) {
    if(process.server) {
      axios.interceptors.response.eject(interceptor);
    }
    
    return Promise.reject(error);
  });

}

рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдкрд░, рдХрд┐рд╕реА рднреА рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рдЕрднреА рднреА рд╕рд░реНрд╡рд░ рдкрд░ рд╣реИрдВ рдФрд░ рдЕрдЧрд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдИ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдИ рдЕрдиреБрд░реЛрдз рд╣реИрдВ, рддреЛ рдЗрд╕ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХреЗ рд╕рд╛рде, рдкрд╣рд▓реЗ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдЕрдиреБрд░реЛрдз рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрд╕ рдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХреЛ рдПрдХ рдмреЗрджрдЦрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╕реЗрдЯрдЖрдЙрдЯрдЖрдЙрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 10 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж, рдлрд┐рд░ рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреА рдУрд░ рд╕реЗ рд╣рдо рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрди рд╕рднреА рдХреЛ рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрдм рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдЕрднреА рднреА рд╕рдХреНрд░рд┐рдп рд░рд╣реЗрдЧрд╛ред

runInNewContext


рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдордЬреЗрджрд╛рд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЗрд╕ рдмрдЧ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рдкрдврд╝реЗрдВ ред рдЬрдм рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рддреИрдпрд╛рд░реА рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рд░реНрдЯрд░-рдЯреЗрдореНрдкреНрд▓реЗрдЯ-рдиреЗрдХреНрд╕реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛, рдФрд░ рдореИрдВ рдХреИрд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдерд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП - рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЛ 1 рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдПрди рдирд╣реАрдВред рдмрд╛рдд рдпрд╣ рд╣реИ, рдЬрдм рд╣рдо npm рд░рди рджреЗрд╡ рд▓рд┐рдЦрддреЗ рд╣реИрдВ - рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИ, рдФрд░ рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрджрд░реНрдн рд╣рд░ рдмрд╛рд░ рдирдпрд╛ рд╣реЛрддрд╛ рд╣реИ (рдЬрд╛рд╣рд┐рд░ рд╣реИ рдзреНрд╡рдЬ рдирд╛рдо рд╕реЗ), рдФрд░ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд┐рд▓реНрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдареЗрд╕ рдореЗрдВ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ nuxt.config.js рдореЗрдВ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдкрдбрд╝рд╛


render: {
    bundleRenderer: {
      runInNewContext: false,
    },
  },

рдирд┐рд╖реНрдХрд░реНрд╖


рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдмрд╣реБрдд рдЧрдВрднреАрд░ рд╣реИ, рдФрд░ рдЗрд╕ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рд╕рдорд╕реНрдпрд╛ рди рдХреЗрд╡рд▓ Vue ssr, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рднреА рдЪрд┐рдВрддрд┐рдд рдХрд░рддреА рд╣реИ, рдФрд░ рди рдХреЗрд╡рд▓ axios, рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рдЬреЛ рдХрд┐ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЗ рд╕рдорд╛рди рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдЖрдк рдореБрдЭреЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо @alexander_proydenko рдкрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ ред рд▓реЗрдЦ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рднреА рдХреЛрдб рдпрд╣рд╛рдБ рдЬреАрдердм рдкрд░ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред

All Articles