Node.js 噩梦,挂起浏览器
请帮忙。我不明白什么问题是噩梦。应用程序逻辑的本质如下:在数据库中有一个恶梦任务列表,当测量状态是由恶梦的初始化过程生成的。 问题是sludyuschem,在某个时间点复制的噩梦停止响应并挂起。在数据库中的计数器上,可以看到它们的工作时间比超时设置中指定的时间长。 请告诉我可能存在什么问题以及如何解决。 检查状态并运行:Node.js 噩梦,挂起浏览器,node.js,electron,nightmare,Node.js,Electron,Nightmare,请帮忙。我不明白什么问题是噩梦。应用程序逻辑的本质如下:在数据库中有一个恶梦任务列表,当测量状态是由恶梦的初始化过程生成的。 问题是sludyuschem,在某个时间点复制的噩梦停止响应并挂起。在数据库中的计数器上,可以看到它们的工作时间比超时设置中指定的时间长。 请告诉我可能存在什么问题以及如何解决。 检查状态并运行: const processParse = require('./processParse'); //... r.table('arc_tasks').getAll('toPar
const processParse = require('./processParse');
//...
r.table('arc_tasks').getAll('toParse', {index: 'status'}).changes().run(conn, (err, cursor) => {
if (err) throw err;
cursor.each((err, data) => {
if (err) throw err;
let val = data.new_val;
if (val !== null) {
val.start = Date.now();
processParse(val).catch(console.error); // <- this is run process nightmare
}
});
});
// ...
你的代码中有一些拼写错误-从那开始?噩梦代码是典型的,不完整的。这是一部分。这些问题都是针对那些经常做噩梦的人的。哦,我明白了,我没有正确地阅读。我想你的意思是“示例”而不是“示例”。示例=译者不理解我的打字错误。我假设,当你发送电子时,噩梦中的任何动作都会完全占据它,并且电子和噩梦之间的关系停止工作。正如在噩梦中,在这方面不提供任何超时一样,所有操作都承诺等待响应,这将导致一个死进程。现在我添加了上限,但它并不总是有效。。。
// requires and etc
module.exports = exports = async function processParse(params){
let nightmare;
try{
await nighmare.authentication(params.user, params.pass);
await nightmare.goto(params.href) // .click....click....;
let resp = await nightmare.evaluate((selector)=>{
return new Promise((resolve,reject)=>{
setTimeout(reject, 30000, new Error('EVAL_TIMEOUT'))
//....
resolve(result);
// ...
reject(result);
});
}, params.selector);
await nightmare.end();
} catch(error){
await nightmare.end();
throw new Error('PARSER_ERROR');
} finally {
// save results and change state of task
}
};
//Example statistics (RUNTIME IN SECS):
{
"href": "https://***",
"templName": "GetModifications",
"runtime": 505.369
},
{
"href": "https://***",
"templName": "GetModifications",
"runtime": 1126.206
},
{
"href": "https://***",
"templName": "GetModifications",
"runtime": 860.733
},
{
"href": "https://***",
"templName": "GetModifications",
"runtime": 379.539
}```