Nodejs:简单代码适用于本地但不适用于服务器

时间:2018-04-19 22:47:09

标签: javascript node.js azure

我还在学习节点,但有一件事我无法在任何地方找到答案。 我正在尝试部署一个简单的代码来读取URL的内容。它在localhost上工作正常但是当我部署到我的azure应用程序时它根本不起作用。 当我访问浏览器上的链接时,它显示一个空白屏幕。

这是代码

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);

1 个答案:

答案 0 :(得分:1)

  

当我访问浏览器上的链接时,它显示一个空白屏幕。

之前我遇到过类似问题,我尝试访问http://cn.bing.com,但请求会自动重定向到https,并且没有任何回复内容。

根据您的代码,我创建了我的Azure应用程序以检查此问题。

<强> 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);

我的项目内容通过KUDU看起来像这样。

enter image description here

<强> TEST:

enter image description here

要验证日志,您可以Enable diagnostics logging并检查您的应用程序日志。此外,您可以将iisnode.yml文件添加到您的网络应用根文件夹中,并具体说明您的日志配置,您可以按照Debug Node.js Web Apps on Azure的详细信息。

此外,这里有一些相关的教程,你可以参考它们:

http.get(options[, callback])

How to deploy a node.js site into Azure Web App to create a Website

Create a Node.js web app in Azure