Javascript 类型错误:';x';这不是一个函数

Javascript 类型错误:';x';这不是一个函数,javascript,node.js,express,web-scraping,Javascript,Node.js,Express,Web Scraping,我正在使用一个Express web应用程序,它在页面首次加载时运行JavaScript抓取代码 以下是节点web抓取代码(scrape.js): 现在,当我运行“node app.js”时,我发现这是一个错误: TypeError:刮取不是一个函数 我尝试过在函数中包装scrape.js,但没有效果。有什么想法吗 修复/解决方案: 我必须导出请求函数,如下代码所示: module.exports = () => { request('https://en.wikipedia.o

我正在使用一个Express web应用程序,它在页面首次加载时运行JavaScript抓取代码

以下是节点web抓取代码(scrape.js):

现在,当我运行“node app.js”时,我发现这是一个错误:

TypeError:刮取不是一个函数

我尝试过在函数中包装scrape.js,但没有效果。有什么想法吗


修复/解决方案:

我必须导出请求函数,如下代码所示:

module.exports = () => {
    request('https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_the_United_States', (error, response, html)) => {
        ... remaining code ...
    }    
}
导出功能:

// scrape.js
module.exports = () => {
    request('https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_the_United_States', (error, response, html) => {
        // rest of function
    }
}

您需要从
scrape.js
导出函数,如:

const request=require('request-promise');
const cheerio=需要(“cheerio”);
常数fs=要求('fs');
const data=require('../public/state_data.json');
const cases_data=require('../public/cases_data.json');
module.export=()=>{
//检索wikipeida页面
请求('https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_the_United_States',(错误、响应、html)=>{
...
});
};
此外,我建议您使用回调或承诺来处理异步代码,如:

  • 承诺:
//scrap.js
module.export=()=>{
返回新承诺((解决、拒绝)=>{
//检索wikipeida页面
请求('https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_the_United_States',(错误、响应、html)=>{
如果(!error&&response.statusCode==200){
...
解决();
}否则{
log(“请求错误”);
拒绝(错误);
}
});
});
};
//app.js
应用程序获取(“/”,(请求,请求)=>{
刮
.然后(()=>{
res.render(“索引”);
})
.catch((错误)=>{
//错误响应
});
});
  • 使用回调:
//scrap.js
module.export=(cb)=>{
//检索wikipeida页面
请求('https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_the_United_States',(错误、响应、html)=>{
如果(!error&&response.statusCode==200){
...
cb(空);
}否则{
log(“请求错误”);
cb(错误);
}
});
};
//app.js
应用程序获取(“/”,(请求,请求)=>{
刮取((错误)=>{
如果(错误){
//错误响应;
回来
}
res.render(“索引”);
});
})
module.exports = () => {
    request('https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_the_United_States', (error, response, html)) => {
        ... remaining code ...
    }    
}
// scrape.js
module.exports = () => {
    request('https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_the_United_States', (error, response, html) => {
        // rest of function
    }
}