Javascript NodeJS数组正在变得未定义?
我正在使用NodeJS和Request和Cheerio库实现一个web scraper。 我试图将刮取的URL链接保存到一个数组中,但是,由于某种原因,当我尝试导出它时,我的数组最终变得未定义Javascript NodeJS数组正在变得未定义?,javascript,arrays,node.js,Javascript,Arrays,Node.js,我正在使用NodeJS和Request和Cheerio库实现一个web scraper。 我试图将刮取的URL链接保存到一个数组中,但是,由于某种原因,当我尝试导出它时,我的数组最终变得未定义 末尾的console.log(url_dict)将数据打印到终端,但是如果我将模块导出到另一个.js文件并将其打印到终端(使用console.log),我会得到一个未定义的错误 有什么想法吗?非常感谢您抽出时间!:) API调用 app.get("/someurl",req,res){ reque
末尾的console.log(url_dict)将数据打印到终端,但是如果我将模块导出到另一个.js文件并将其打印到终端(使用console.log),我会得到一个未定义的错误 有什么想法吗?非常感谢您抽出时间!:)
API调用
app.get("/someurl",req,res){
request(senatorlist, function(err, resp, body) {
if (err)
throw err;
var $ = cheerio.load(body);
$('table.wikitable tr a').each(function(i, link){
url_dict.push($(link).attr('href'));
});
console.log(url_dict);
res.json(url_dict);
});
}
客户端
$http.get("/someurl").success(function(data,status,headers,config){
console.log("success",data);
$scope.items=data;
}).error(function(data,status,headers,config){
console.log("error",data);
});
};
尝试在服务器上执行此操作,并传递此json以显示数据。希望这能解决您的疑问。:) 如果你的其他应用程序只有一个require和一个日志,那么它显然不是在等待来自
lister()函数的数据,甚至不是在调用它。向lister函数发送回调:
function lister(callback) {
request(senatorlist, function(err, resp, body) {
if (err)
throw err;
var $ = cheerio.load(body);
$('table.wikitable tr a').each(function(i, link){
url_dict.push($(link).attr('href'));
});
console.log(url_dict);
callback(url_dict);
});
}
在其他js文件中:
lister(function(url_dict) {
console.log('other js url_dict:', url_dict);
});
“将模块导出到另一个.js”这里没有看到您导出任何东西,我们是否缺少一些代码?@kwon,另一个.js是一行,带有require和console.log。刚刚更新了源站帖子,提到了这一点!谢谢你的回复!但也有一些错误:既然您使用的是应用程序,是否应该有require('express')?另外,.get是否需要回调函数,或者我是否可以直接将req、res作为参数输入?这很有效!谢谢:)。如果你有时间的话,你能更详细地解释一下这个概念吗,或者给我指一些关于它的资源吗?我对nodejsb非常陌生,基本上,当您进行异步调用(任何需要回调函数的调用)时,代码执行不会等待并继续,因此您的数据仍在等待加载,程序的其余部分可能会完成。谷歌搜索Asynchronous、event-driven、javascript和node.js这几个词的组合。这是关于它的。
lister(function(url_dict) {
console.log('other js url_dict:', url_dict);
});