Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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
Node.js 噩梦,挂起浏览器_Node.js_Electron_Nightmare - Fatal编程技术网

Node.js 噩梦,挂起浏览器

Node.js 噩梦,挂起浏览器,node.js,electron,nightmare,Node.js,Electron,Nightmare,请帮忙。我不明白什么问题是噩梦。应用程序逻辑的本质如下:在数据库中有一个恶梦任务列表,当测量状态是由恶梦的初始化过程生成的。 问题是sludyuschem,在某个时间点复制的噩梦停止响应并挂起。在数据库中的计数器上,可以看到它们的工作时间比超时设置中指定的时间长。 请告诉我可能存在什么问题以及如何解决。 检查状态并运行: const processParse = require('./processParse'); //... r.table('arc_tasks').getAll('toPar

请帮忙。我不明白什么问题是噩梦。应用程序逻辑的本质如下:在数据库中有一个恶梦任务列表,当测量状态是由恶梦的初始化过程生成的。 问题是sludyuschem,在某个时间点复制的噩梦停止响应并挂起。在数据库中的计数器上,可以看到它们的工作时间比超时设置中指定的时间长。 请告诉我可能存在什么问题以及如何解决。 检查状态并运行:

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
    }```