Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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 使用Node JS ChereIO模块进行抓取时出现服务器端问题?_Javascript_Meteor_Scraper - Fatal编程技术网

Javascript 使用Node JS ChereIO模块进行抓取时出现服务器端问题?

Javascript 使用Node JS ChereIO模块进行抓取时出现服务器端问题?,javascript,meteor,scraper,Javascript,Meteor,Scraper,我在这里试图遵循以下思路: 不幸的是,我在执行此操作时出现以下错误: Uncaught Error: Can't make a blocking HTTP call from the client; callback required. 以下是我的项目的javascript代码: var cheerio; if (Meteor.isClient) { Template.entry.events = { 'click .btn_scrape' : function() {

我在这里试图遵循以下思路:

不幸的是,我在执行此操作时出现以下错误:

Uncaught Error: Can't make a blocking HTTP call from the client; callback required. 
以下是我的项目的javascript代码:

var cheerio;

if (Meteor.isClient) {

  Template.entry.events = {
    'click .btn_scrape' : function() {
    $ = cheerio.load(Meteor.http.get("https://github.com/meteor/meteor").content);
    console.log($('.commit-title').text().trim());
    },
 }
}

if (Meteor.isServer) {
  Meteor.startup(function () {
    var require = __meteor_bootstrap__.require;
    cheerio = __meteor_bootstrap__.require('cheerio');
  });


}
如果我将代码放在Meteor.startup(function()…中,则不会发生任何事情,也不会有任何错误记录到控制台中

我希望能够在单击按钮时调用函数,以获取文本框中的内容并将其删除,但这可以在代码运行后执行

有谁会碰巧知道如何解决这个问题吗

谢谢你抽出时间


Jonathan。

服务器端和客户端仍然是隔离的。在另一种情况下,
Meteor.call
用于将消息中继到服务器,在那里执行请求,并将刮取结果返回给客户端

您遇到的错误是由于javascript在浏览器端是异步的。有关这方面的详细信息-,您需要使用回调和客户端代码,因为从服务器获取数据需要时间

这就是您打算从客户端运行http请求的原因吗?在客户端上,存在诸如
访问控制允许来源。
。这就是为什么在该客户端上对服务器执行
Meteor.call
以代理请求并将数据返回到客户端的原因

在单击处理程序中,您可以使用以下代码:

在代码的
Meteor.isServer
部分,您仍然需要使用方法
last\u action
将数据代理到浏览器:

var cheerio = __meteor_bootstrap__.require('cheerio');
Meteor.methods({
last_action: function() {
       $ = cheerio.load(Meteor.http.get("https://github.com/meteor/meteor").content);
       return $('.commit-title').text().trim()      
    }
})
var cheerio = __meteor_bootstrap__.require('cheerio');
Meteor.methods({
last_action: function() {
       $ = cheerio.load(Meteor.http.get("https://github.com/meteor/meteor").content);
       return $('.commit-title').text().trim()      
    }
})