2 votes

Nodejs : un code simple fonctionne en local mais pas sur le serveur

Je suis toujours en train d'apprendre à utiliser Node, mais il y a une chose pour laquelle je ne trouve aucune réponse. J'essaie de déployer un code simple pour lire le contenu d'une URL. Il fonctionne bien sur localhost mais lorsque je le déploie sur mon application Azure, il ne fonctionne pas du tout. Lorsque j'accède au lien dans le navigateur, un écran vide s'affiche.

Voici le code

var http = require('http');

var server = http.createServer(function(request, response) {

    const url = "http://www.google.com";

    response.writeHead(200, {"Content-Type": "text/plain"});

    http.get(url, res => {

        res.setEncoding("utf8");
        let body = "";
        res.on("data", data => {
            body += data;
        });

        res.on("end", () => {

        console.log("End of response", port);

        response.end('End of response.<br/>');

        });

    });

});

var port = process.env.PORT || 1337;
server.listen(port);

console.log("Server running at http://localhost:%d", port);

1voto

Bruce Chen Points 14187

Lorsque j'accède au lien sur le navigateur, un écran vide s'affiche.

J'ai rencontré le même problème auparavant, j'ai essayé d'accéder à http://cn.bing.com mais la demande serait automatiquement redirigée vers l'adresse suivante https et il n'y a pas de contenu de réponse.

Sur la base de votre code, j'ai créé mon application web azur pour vérifier ce problème.

app.js :

var http = require('http');

var server = http.createServer(function(request, response) {

    response.writeHead(200, {"Content-Type": "text/plain"});

    http.get("http://www.google.com", res => {

        //check the status code
        console.log(res.statusCode+','+res.headers['location']);

        res.setEncoding("utf8");
        let body = "";
        res.on("data", data => {
            body += data;
        });

        res.on("end", () => {
        console.log("End of response", port);
        response.end(body);
        });

    }).on('error',(e)=>{ //catch the error 
        console.error('Got error:'+e);
        response.end('Got exception:'+e);
    });

});

var port = process.env.PORT || 1337;
server.listen(port);

console.log("Server running at http://localhost:%d", port);

Le contenu de mon projet ressemble à ceci via KUDU .

enter image description here

TEST :

enter image description here

Pour vérifier les journaux, vous pouvez Activer l'enregistrement des diagnostics et vérifiez les journaux de votre application. Vous pouvez également ajouter un iisnode.yml dans le dossier racine de votre application web et les configurations spécifiques de votre journal, les détails que vous pourriez suivre Déboguer les applications Web Node.js sur Azure .

En outre, voici quelques tutoriels connexes, vous pouvez vous y référer :

http.get(options[, callback])

Comment déployer un site node.js dans Azure Web App pour créer un site Web ?

Créer une application Web Node.js dans Azure

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X