Javascript API调用期间的NodeJs MaxListenerSexceedAwarning
我正在用wind数据填充一个数组(从API JSON中刮取),但我得到了一个Javascript API调用期间的NodeJs MaxListenerSexceedAwarning,javascript,node.js,arrays,puppeteer,Javascript,Node.js,Arrays,Puppeteer,我正在用wind数据填充一个数组(从API JSON中刮取),但我得到了一个MaxListenerSexceedAdwarning错误。我已经查过了,似乎是因为代码中有个bug。解决方法是设置setMaxListeners(n),但显然不建议这样做 有人能看到是什么导致这么多听众注册吗?解决办法是什么?我正在创建一个API,它可以在请求时吐出数组windRecordings 代码 const getWindForecast=(windRecordings)=>{ 设置间隔(()=>{ const
MaxListenerSexceedAdwarning
错误。我已经查过了,似乎是因为代码中有个bug。解决方法是设置setMaxListeners(n)代码>,但显然不建议这样做
有人能看到是什么导致这么多听众注册吗?解决办法是什么?我正在创建一个API,它可以在请求时吐出数组windRecordings
代码
const getWindForecast=(windRecordings)=>{
设置间隔(()=>{
const instantWind=scrapapi(
"http://mobvaer.kystverket.no/v2/api/stations/5265049"
);
instantWind.then((res)=>{
如果(windRecordings.length>0){
//已将风值推送到列表中
const latestRecordedWind=windRecordings[windRecordings.length-1];//取出第一个元素
//将列表中的lates wind值与lates API请求wind值进行比较
如果(
latestRecordedWind[1][“值”][“值”]==res[1][“值”][“值”]
) {
console.log(“它们是相同的”);
}否则{
log(“它们不一样,推送它们。”)
windRecordings.推送(res);
}
}否则{
//长度小于0,到目前为止尚未添加任何元素,请推送元素
log(“将第一个推到列表中”);
windRecordings.推送(res);
}
});
归还录音;
}, 1000);
};
错误
MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 exit listeners added to [process]. Use emitter.setMaxListeners() to increase limit
(node:85830) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGINT listeners added to [process]. Use emitter.setMaxListeners() to increase limit
(node:85830) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGTERM listeners added to [process]. Use emitter.setMaxListeners() to increase limit
(node:85830) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGHUP listeners added to [process]. Use emitter.setMaxListeners() to increase limit
scrapeAPI函数
const puppeteer = require("puppeteer");
const scrapeAPI = async (url) => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);
var content = await page.content();
innerText = await page.evaluate(() => {
return JSON.parse(document.querySelector("body").innerText);
});
const instantWind = innerText["Instantaneous"];
return instantWind;
};
干杯 您每秒启动一个新的浏览器实例,但不关闭它们
您的代码执行以下操作:
setInterval(() => {
//const instantWind = scrapeAPI();
...
const browser = await puppeteer.launch();
...
}, 1000);
您需要重新使用浏览器实例或至少关闭它们:
const scrapeAPI = async (url) => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);
var content = await page.content();
innerText = await page.evaluate(() => {
return JSON.parse(document.querySelector("body").innerText);
});
const instantWind = innerText["Instantaneous"];
await browser.close();
return instantWind;
};