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()
}
})