Razzle: Exemples de déploiement sur Azure ?

Créé le 1 févr. 2019  ·  4Commentaires  ·  Source: jaredpalmer/razzle

J'essaie de déployer une application razzle sur un service d'application Azure, mais je rencontre des problèmes pour exécuter le serveur. J'ai construit l'application et j'ai un dossier de construction. Ensuite, j'ai utilisé ce fichier web.config et changé les points d'entrée en _build/server.js_. L'application semble fonctionner correctement, car j'ai vérifié les journaux et le classique

_🚀 commencé_

apparaît. Quand je vais sur l'url de l'application, il n'y a aucune réponse. Juste une erreur 500 lorsque la demande expire.

J'ai vérifié la construction sur ma machine locale en cours d'exécution

node build/server.js

et tout fonctionne comme prévu.

J'espère que vous pouvez aider.

Salutations.

stale

Commentaire le plus utile

Salut,

Ceci est très probablement lié à #356 (des variables environnementales telles que PORT sont intégrées pendant la construction). IISNode spécifie le canal nommé sur lequel écouter via PORT , mais cela n'est pas récupéré par le serveur, car Razzle intégrera l'accès à process.env.PORT (probablement à 3000) pendant la construction.

Nous utilisons cette solution de contournement dans razzle.config.js pour empêcher l'inline PORT :

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;
    },
};

Tous les 4 commentaires

Salut,

Ceci est très probablement lié à #356 (des variables environnementales telles que PORT sont intégrées pendant la construction). IISNode spécifie le canal nommé sur lequel écouter via PORT , mais cela n'est pas récupéré par le serveur, car Razzle intégrera l'accès à process.env.PORT (probablement à 3000) pendant la construction.

Nous utilisons cette solution de contournement dans razzle.config.js pour empêcher l'inline PORT :

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;
    },
};

Salut,

Ceci est très probablement lié à #356 (des variables environnementales telles que PORT sont intégrées pendant la construction). IISNode spécifie le canal nommé sur lequel écouter via PORT , mais cela n'est pas récupéré par le serveur, car Razzle intégrera l'accès à process.env.PORT (probablement à 3000) pendant la construction.

Nous utilisons cette solution de contournement dans razzle.config.js pour empêcher l'inline PORT :

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;
    },
};

J'ai essayé cette configuration mais lorsque j'essaie la commande 'npm run start:prod ' sur mon local, j'obtiens une erreur que assets.json n'est pas trouvé. pourriez-vous s'il vous plaît conseiller à ce sujet?

@vbutani
Cela fonctionne-t-il si vous commentez la ligne où nous supprimons « process.env.PUBLIC_PATH » des définitions ?

@vbutani
Cela fonctionne-t-il si vous commentez la ligne où nous supprimons « process.env.PUBLIC_PATH » des définitions ?

Merci @fabianishere pour la réponse rapide. Mon mauvais, tout en faisant une modification de code suggérée, j'ai trouvé mon problème de code personnalisé dans la méthode de modification.
Votre code fonctionne parfaitement sans aucun changement !! La configuration personnalisée que vous avez créée remplace la valeur PORT codée en dur par process.env.PORT dans server.js groupé.

Merci beaucoup. :)

Cette page vous a été utile?
0 / 5 - 0 notes