Razzle: Azure 배포에 λŒ€ν•œ μ˜ˆλŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

에 λ§Œλ“  2019λ…„ 02μ›” 01일  Β·  4μ½”λ©˜νŠΈ  Β·  좜처: jaredpalmer/razzle

Azure App Service에 razzle 앱을 λ°°ν¬ν•˜λ €κ³  ν•˜λŠ”λ° μ„œλ²„λ₯Ό μ‹€ν–‰ν•˜λŠ” 데 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 앱을 λΉŒλ“œν•˜κ³  λΉŒλ“œ 폴더λ₯Ό μ–»μ—ˆμŠ΅λ‹ˆλ‹€. 그런 λ‹€μŒ 이 web.config νŒŒμΌμ„ μ‚¬μš©ν•˜μ—¬ μ§„μž…μ μ„ _build/server.js_둜 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€. λ‘œκ·Έμ™€ ν΄λž˜μ‹μ„ ν™•μΈν–ˆκΈ° λ•Œλ¬Έμ— 앱이 μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

_πŸš€ μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€_

λ‚˜νƒ€λ‚©λ‹ˆλ‹€. μ•±μ˜ url에 가도 μ•„λ¬΄λŸ° 응닡이 μ—†μŠ΅λ‹ˆλ‹€. μš”μ²­ μ‹œκ°„μ΄ 초과되면 였λ₯˜ 500이 λ°œμƒν•©λ‹ˆλ‹€.

μ‹€ν–‰ 쀑인 둜컬 μ»΄ν“¨ν„°μ—μ„œ λΉŒλ“œλ₯Ό ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

node build/server.js

λͺ¨λ“  것이 μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

당신이 λ„μšΈ 수 있기λ₯Ό λ°”λžλ‹ˆλ‹€.

λ¬Έμ•ˆ 인사.

stale

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ•ˆλ…•,

이것은 μ•„λ§ˆλ„ #356κ³Ό 관련이 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€( PORT 와 같은 ν™˜κ²½ λ³€μˆ˜λŠ” λΉŒλ“œ μ‹œκ°„ λ™μ•ˆ μΈλΌμΈλ©λ‹ˆλ‹€). IISNodeλŠ” PORT λ₯Ό 톡해 μˆ˜μ‹  λŒ€κΈ°ν•  λͺ…λͺ…λœ νŒŒμ΄ν”„λ₯Ό μ§€μ •ν•˜μ§€λ§Œ Razzle이 λΉŒλ“œ μ‹œκ°„ λ™μ•ˆ process.env.PORT (μ•„λ§ˆλ„ 3000)에 λŒ€ν•œ μ•‘μ„ΈμŠ€λ₯Ό μΈλΌμΈν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„μ—μ„œ μ„ νƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

PORT 인라인을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ razzle.config.js μ—μ„œ 이 ν•΄κ²° 방법을 μ‚¬μš©ν•©λ‹ˆλ‹€.

module.exports = {
    ...
    modify: (config, { target, dev }, webpack) => {
        const appConfig = Object.assign({}, config);

        // <strong i="13">@BUG</strong>: Do not inline certain env vars; https://github.com/jaredpalmer/razzle/issues/356
        if (target === 'node') {
            const idx = appConfig.plugins.findIndex(plugin => plugin.constructor.name === 'DefinePlugin');
            const { definitions } = appConfig.plugins[idx];
            const newDefs = Object.assign({}, definitions);

            delete newDefs['process.env.PORT'];
            delete newDefs['process.env.HOST'];
            delete newDefs['process.env.PUBLIC_PATH'];

            appConfig.plugins = [].concat(appConfig.plugins);
            appConfig.plugins[idx] = new webpack.DefinePlugin(newDefs)
        }

        return appConfig;
    },
};

λͺ¨λ“  4 λŒ“κΈ€

μ•ˆλ…•,

이것은 μ•„λ§ˆλ„ #356κ³Ό 관련이 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€( PORT 와 같은 ν™˜κ²½ λ³€μˆ˜λŠ” λΉŒλ“œ μ‹œκ°„ λ™μ•ˆ μΈλΌμΈλ©λ‹ˆλ‹€). IISNodeλŠ” PORT λ₯Ό 톡해 μˆ˜μ‹  λŒ€κΈ°ν•  λͺ…λͺ…λœ νŒŒμ΄ν”„λ₯Ό μ§€μ •ν•˜μ§€λ§Œ Razzle이 λΉŒλ“œ μ‹œκ°„ λ™μ•ˆ process.env.PORT (μ•„λ§ˆλ„ 3000)에 λŒ€ν•œ μ•‘μ„ΈμŠ€λ₯Ό μΈλΌμΈν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„μ—μ„œ μ„ νƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

PORT 인라인을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ razzle.config.js μ—μ„œ 이 ν•΄κ²° 방법을 μ‚¬μš©ν•©λ‹ˆλ‹€.

module.exports = {
    ...
    modify: (config, { target, dev }, webpack) => {
        const appConfig = Object.assign({}, config);

        // <strong i="13">@BUG</strong>: Do not inline certain env vars; https://github.com/jaredpalmer/razzle/issues/356
        if (target === 'node') {
            const idx = appConfig.plugins.findIndex(plugin => plugin.constructor.name === 'DefinePlugin');
            const { definitions } = appConfig.plugins[idx];
            const newDefs = Object.assign({}, definitions);

            delete newDefs['process.env.PORT'];
            delete newDefs['process.env.HOST'];
            delete newDefs['process.env.PUBLIC_PATH'];

            appConfig.plugins = [].concat(appConfig.plugins);
            appConfig.plugins[idx] = new webpack.DefinePlugin(newDefs)
        }

        return appConfig;
    },
};

μ•ˆλ…•,

이것은 μ•„λ§ˆλ„ #356κ³Ό 관련이 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€( PORT 와 같은 ν™˜κ²½ λ³€μˆ˜λŠ” λΉŒλ“œ μ‹œκ°„ λ™μ•ˆ μΈλΌμΈλ©λ‹ˆλ‹€). IISNodeλŠ” PORT λ₯Ό 톡해 μˆ˜μ‹  λŒ€κΈ°ν•  λͺ…λͺ…λœ νŒŒμ΄ν”„λ₯Ό μ§€μ •ν•˜μ§€λ§Œ Razzle이 λΉŒλ“œ μ‹œκ°„ λ™μ•ˆ process.env.PORT (μ•„λ§ˆλ„ 3000)에 λŒ€ν•œ μ•‘μ„ΈμŠ€λ₯Ό μΈλΌμΈν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„μ—μ„œ μ„ νƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

PORT 인라인을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ razzle.config.js μ—μ„œ 이 ν•΄κ²° 방법을 μ‚¬μš©ν•©λ‹ˆλ‹€.

module.exports = {
    ...
    modify: (config, { target, dev }, webpack) => {
        const appConfig = Object.assign({}, config);

        // <strong i="14">@BUG</strong>: Do not inline certain env vars; https://github.com/jaredpalmer/razzle/issues/356
        if (target === 'node') {
            const idx = appConfig.plugins.findIndex(plugin => plugin.constructor.name === 'DefinePlugin');
            const { definitions } = appConfig.plugins[idx];
            const newDefs = Object.assign({}, definitions);

            delete newDefs['process.env.PORT'];
            delete newDefs['process.env.HOST'];
            delete newDefs['process.env.PUBLIC_PATH'];

            appConfig.plugins = [].concat(appConfig.plugins);
            appConfig.plugins[idx] = new webpack.DefinePlugin(newDefs)
        }

        return appConfig;
    },
};

이 ꡬ성을 μ‹œλ„ν–ˆμ§€λ§Œ λ‘œμ»¬μ—μ„œ 'npm run start:prod ' λͺ…령을 μ‹œλ„ν•˜λ©΄ assets.json을 찾을 수 μ—†λ‹€λŠ” 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. 이것에 λŒ€ν•΄ μ‘°μ–Έν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

@vbutani
μ •μ˜μ—μ„œ 'process.env.PUBLIC_PATH'λ₯Ό μ‚­μ œν•œ 쀄을 주석 μ²˜λ¦¬ν•˜λ©΄ μž‘λ™ν•©λ‹ˆκΉŒ?

@vbutani
μ •μ˜μ—μ„œ 'process.env.PUBLIC_PATH'λ₯Ό μ‚­μ œν•œ 쀄을 주석 μ²˜λ¦¬ν•˜λ©΄ μž‘λ™ν•©λ‹ˆκΉŒ?

λΉ λ₯Έ 응닡에 λŒ€ν•΄ @fabianisher μ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. λ‚΄ λ‚˜μœ, μ œμ•ˆλœ μ½”λ“œ 변경을 μˆ˜ν–‰ν•˜λŠ” λ™μ•ˆ μˆ˜μ • λ©”μ„œλ“œμ—μ„œ λ‚΄ μ‚¬μš©μž 지정 μ½”λ“œ 문제λ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.
κ·€ν•˜μ˜ μ½”λ“œλŠ” λ³€κ²½ 없이 μ™„μ „νžˆ 잘 μž‘λ™ν•©λ‹ˆλ‹€!! μ‚¬μš©μžκ°€ μƒμ„±ν•œ μ‚¬μš©μž 지정 ꡬ성은 λ²ˆλ“€λœ server.jsμ—μ„œ ν•˜λ“œ μ½”λ”©λœ PORT 값을 process.env.PORT둜 λŒ€μ²΄ν•©λ‹ˆλ‹€.

정말 κ°μ‚¬ν•©λ‹ˆλ‹€. :)

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰