Razzle: рд╕рдВрдХрд▓рд┐рдд рдмрд┐рд▓реНрдб рдЗрдирд▓рд╛рдЗрди PORT рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рд╕рд┐рддре░ 2017  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jaredpalmer/razzle

getClientEnvironment рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдХрд╛рд░рдг PORT рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ process.env.PORT рд░реВрдк рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдВрддрд┐рдо рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рд░реИрдЬрд╝рд▓ рдХреЛ рд╣реЗрд░реЛрдХреВ рдкрд░ рдкреНрд░рд╛рд░рдВрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрди рдЬрд╛рдПрдЧрд╛ : рдЙрддреНрдкрд╛рдж

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

рдЕрдЧрд░ рд▓реЛрдЧ рдЕрднреА рднреА рдЗрд╕рд╕реЗ рдЬреВрдЭ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИ

  // This will extract the env during production execution.. PORT will not be inlined during build
  const getEnv = c => process.env[c];
  app.listen(getEnv('PORT'));

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

рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ getClientEnvironment stringified рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдкреВрд░реЗ process.env рдХреЛ рд╕рднреА рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕рд╣рд┐рдд рдЗрдирд▓рд╛рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

// console.log(process.env.PORT) gets compiled to:
console.log(Object({"NODE_ENV":"production","PORT":3000,"VERBOSE":false,"HOST":"localhost","RAZZLE_ASSETS_MANIFEST":"somepath","BUILD_TARGET":"server","RAZZLE_PUBLIC_DIR":"somepath"}).PORT);

рдЗрд╕рд╕реЗ рд╕рд░реНрд╡рд░ рдРрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╣рд░ рдмрд╛рд░ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд┐рдП рдмрд┐рдирд╛ рдЧрддрд┐рд╢реАрд▓ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рд╛рдп @ d4rky-pl,
рдЖрдк razzle-heroku рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :) рдпрд╣ рд╣рд░реЛрдХреВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП #340 рджреЗрдЦреЗрдВ

@xouabita рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж :)

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реИрдЬрд╝рд▓ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ process.env рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрддреНрдкрд╛рджрди рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдкреНрд░рдореБрдЦ рд╣реИред

рдпрд╣ рдореЗрд░реА рдХрд▓реНрдкрдирд╛ рд╕реЗ рднреА рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдордЭрд╛рдиреЗ рджреЛ:

рдореИрдВ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдЯреЗрд╕реНрдЯ рд░рдирд░ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ (рд╕рд┐рд╕реНрдЯрдо рдЯреЗрд╕реНрдЯ: рдЯреЗрд╕реНрдЯ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВ) рдФрд░ рдореИрдВ рдкрд╣рд▓реЗ рджрд┐рди рд╕реЗ рд░реИрдЬрд╝рд▓ рд╕рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ рдкреЛрд░реНрдЯ рдкрд░рд┐рдгрд╛рдореА рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд░реЗрдЦрд╛рдВрдХрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ рд╕рдмрдХреБрдЫ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдЗрд╕реЗ рдЗрдирд▓рд╛рдЗрди рднреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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

@jaredpalmer рдХреГрдкрдпрд╛ рдЙрддреНрдкрд╛рджрди рдирд┐рд░реНрдорд╛рдг рдореЗрдВ PORT рдХреЛ рдЗрдирд▓рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрдгрдп рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдмрд╛рд░ рдХрд╛ рд▓реБрдХрдЕрдк рдЬреЛрдбрд╝реЗрдВ ( const PORT = process.env.PORT рдЬреИрд╕рд╛ рдХрд┐ server.js рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ)ред рдЕрдЧрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдирд░рдХ рдореЗрдВ рдХреЛрдИ рдореМрдХрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдЯреВрд▓ рдореЗрдВ рдПрдХ рдЕрд╕реНрд╡реАрдХрд░рдг рдЬреЛрдбрд╝реВрдВрдЧрд╛ :)

@ d4rky-pl рдЪрд▓реЛ рдЗрд╕реЗ рд╕рд╣реА рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рд╣реБрдЖ рдЕрдЧрд░ рд╣рдо рдмреНрд▓реИрдХ рд▓рд┐рд╕реНрдЯреЗрдб

  • process.env.RAZZLE_SERVER_ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛
  • рдФрд░ PORT

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдпрд╣ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд░рдирдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди process.env. рд╕реЗ рдкрдврд╝рдирд╛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдзреАрдорд╛ рд╣реИ рдФрд░ рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ рдЗрд╕рд╕реЗ рдмрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рд░рдЬреНрдЬрд▓ рдЙрд╕рдХреЗреЛрдХреВ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рддреЛ рд╣рд╛рдБред рдЖрдЗрдП рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВред

рдпрд╣ рдореБрдЭреЗ рдкрдВрд╕рдж рд╣реИред PORT рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдпрд╣ env рдЪрд░ рдХреЗрд╡рд▓ рдмреВрдЯ рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдкрдврд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

RAZZLE_SERVER_ , рдЙрди рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рдордХрд╛рдЬ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдирд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ - рдпрд╣ рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрдо рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ рдЬрдм рд▓реЛрдЧ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рд╕рднреА рдХреЛ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ (рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдмрдЬрд╛рдп рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмреВрдЯ рдХреЗ рджреМрд░рд╛рди рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)ред рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, рдмрд┐рд▓реНрдбрдЯрд╛рдЗрдо рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП env vars рдХреЗ рд╕рд╛рде рднреА рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЙрдкрд╛рдп рд╣реИ:

/* eslint-disable no-param-reassign */
const razzleConfigEnv = require('razzle/config/env');

module.exports = {
  modify: (config, { target, dev }, webpack) => {
    // Fix process.env
    if (target === 'node') {
      config.plugins = config.plugins.filter(plugin => plugin.constructor.name !== 'DefinePlugin');
      const dotenv = razzleConfigEnv.getClientEnv(target, {
        clearConsole: true,
        host: 'localhost',
        port: 3000
      });
      config.plugins.push(
        new webpack.DefinePlugin({
          'process.env': `Object.assign(${JSON.stringify(dotenv.raw)}, process.env)`
        })
      );
    }
    return config;
  }
};

рд╣реЗрд░реЛрдХреВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдореЗрд░рд╛ рдХрд╛рдордХрд╛рдЬ рд╣реИ:

// getPorts.js

// bypass webpack.DefinePlugin
const { env } = require('process')

export const port = () =>
  parseInt(
    env.RAZZLE_PORT ||
      env.PORT ||
      process.env.RAZZLE_PORT ||
      process.env.PORT ||
      3000,
    10,
  )

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

рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдХрд╛рд░рдг ProBot рдиреЗ рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рд╣реЛрд▓рд░ рдЕрдЧрд░ рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВрдЧреЗред

рдЕрдЧрд░ рд▓реЛрдЧ рдЕрднреА рднреА рдЗрд╕рд╕реЗ рдЬреВрдЭ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИ

  // This will extract the env during production execution.. PORT will not be inlined during build
  const getEnv = c => process.env[c];
  app.listen(getEnv('PORT'));

рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, рдмрд┐рд▓реНрдбрдЯрд╛рдЗрдо рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП env vars рдХреЗ рд╕рд╛рде рднреА рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЙрдкрд╛рдп рд╣реИ:

/* eslint-disable no-param-reassign */
const razzleConfigEnv = require('razzle/config/env');

module.exports = {
  modify: (config, { target, dev }, webpack) => {
    // Fix process.env
    if (target === 'node') {
      config.plugins = config.plugins.filter(plugin => plugin.constructor.name !== 'DefinePlugin');
      const dotenv = razzleConfigEnv.getClientEnv(target, {
        clearConsole: true,
        host: 'localhost',
        port: 3000
      });
      config.plugins.push(
        new webpack.DefinePlugin({
          'process.env': `Object.assign(${JSON.stringify(dotenv.raw)}, process.env)`
        })
      );
    }
    return config;
  }
};

рдореИрдВрдиреЗ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдкрд░ 'рдПрдирдкреАрдПрдо рд░рди рд╕реНрдЯрд╛рд░реНрдЯ: рдкреНрд░реЛрдб' рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдХрд┐ рд╕рдВрдкрддреНрддрд┐рдпрд╛рдВред рдЬреЗрд╕рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред рд╕рд╛рде рд╣реА, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдореБрдЭреЗ рдмрд┐рд▓реНрдб рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдореБрдЭреЗ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдВ рднреА рдорд┐рд▓рддреА рд╣реИрдВред

рдпрд╣ рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

`
appConfig.plugins = appConfig.plugins.filter(plugin => plugin.constructor.name !== 'DefinePlugin');
const dotenv = razzleConfigEnv.getClientEnv (рд▓рдХреНрд╖реНрдп);

  delete dotenv.raw.PORT;
  config.plugins.push(
    new webpack.EnvironmentPlugin(dotenv.raw)
  );

`

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