Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 NodeJS数组正在变得未定义?_Javascript_Arrays_Node.js - Fatal编程技术网

Javascript NodeJS数组正在变得未定义?

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

我正在使用NodeJS和Request和Cheerio库实现一个web scraper。 我试图将刮取的URL链接保存到一个数组中,但是,由于某种原因,当我尝试导出它时,我的数组最终变得未定义


末尾的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);
});