Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将节点函数的结果写入html/控制台日志?_Javascript_Node.js_Express_Web Scraping - Fatal编程技术网

Javascript 如何将节点函数的结果写入html/控制台日志?

Javascript 如何将节点函数的结果写入html/控制台日志?,javascript,node.js,express,web-scraping,Javascript,Node.js,Express,Web Scraping,我是node的新手,我正在尝试将结果打印到控制台,并最终以HTML格式显示它们。我曾尝试将该函数作为变量调用,稍后我将在HTML中使用该函数,但这不起作用。一些类似的示例代码: var app = require('express')(); var x = require('x-ray')(); app.get('/', function(req, res) { res.send(x('http://google.com', 'title').write()); }) 谢谢 我对“x射线

我是node的新手,我正在尝试将结果打印到控制台,并最终以HTML格式显示它们。我曾尝试将该函数作为变量调用,稍后我将在HTML中使用该函数,但这不起作用。一些类似的示例代码:

var app = require('express')();
var x = require('x-ray')();

app.get('/', function(req, res) {
  res.send(x('http://google.com', 'title').write());
})

谢谢

我对“x射线”库了解不多,但我认为问题在于它必须异步发出请求才能返回响应数据。文档中说,如果不将路径设置为write函数的参数,它将返回一个可读流,请尝试以下操作:

app.get('/', function(req, res) {
    var stream = x('http://google.com', 'title').write(),
        responseString = '';
    stream.on('data', function(chunk) {
        responseString += chunk;
    });
    stream.on('end', function() {
        res.send(responseString);
    });
});
您还需要启动服务器侦听特定端口(下例中为3000):

现在打开浏览器,导航到
127.0.0.1:3000
localhost:3000
,您将看到“谷歌”出现


另外:如果您想在完整的HTML页面中使用响应数据(而不仅仅是单独发送字符串),您可能需要进一步探索如何使用Jade(或类似)模板在Express中实现这一点。每次有人向你的服务器发送一个合适的路由请求时,这段代码都会刮伤谷歌;如果你只想抓取Google一次,然后在服务器的响应中一次又一次地使用相同的字符串,你可能需要考虑如何实现这一点(很简单!)

const PORT = 3000;
app.listen(PORT, function() {
    console.log("Server is listening on port " + PORT + ".");
}); // the callback function simply runs once the server starts