如何终止npm查询程序提示并将控制权返回到主菜单/功能

时间:2018-08-06 18:06:25

标签: node.js npm inquirer

我一直在使用问询者npm软件包遇到问题,无法在任何地方找到解决方案。我正在尝试允许用户随时退出函数中的查询器提示并返回主菜单。但是,这似乎导致查询器提示的多个实例保持活动状态,从而导致此错误:

(节点:9756)MaxListenersExceededWarning:检测到可能的EventEmitter内存泄漏。添加了11个出口侦听器。使用generator.setMaxListeners()增加限制

,还会导致特定功能中的查询者提示开始多次显示相同的提示。在尝试多次使用此功能后,我附加了行为的图像。 Prompt Bug

我尝试增加事件侦听器的最大数量,该事件侦听器阻止了内存泄漏错误,但查询器提示错误不受影响。

inquirer.prompt([
        {
            name: 'itemid',
            type: 'input',
            message: 'Please enter the product id. (type "exit" to return to main menu)',
            validate(answer) {

                //validates the id provided exists in the database. If exit is entered, returns to main().
                var valid = false;
                var exit = answer.toLowerCase();
                id = parseInt(answer);

                if (exit == "exit") {
                    return main();
                }

                for (var j = 0; j < idCheckArray.length; j++) {

                    if (answer == idCheckArray[j]) {

                        valid = true;

                    } else {
                    }
                }

                if (valid === true && exit != "exit") {

                    return (true);

                } else {

                    return ("Item ID does not exist. Please enter a valid ID.");
                }
            }
        },

我认为原因是,通过从查询器validate函数中返回并调用main,查询器不会调用其内置结束函数,因此,每次执行此操作时,不会删除查询器创建的事件侦听器。

非常感谢您提供有关解决此问题的帮助,

0 个答案:

没有答案