gpt4 book ai didi

node.js - 如何终止 npm 查询器提示并将控制权返回到主菜单/功能

转载 作者:行者123 更新时间:2023-12-03 17:32:12 28 4
gpt4 key购买 nike

我一直遇到与查询器 npm 包有关的问题,并且在任何地方都找不到解决方案。我试图允许用户在任何时候退出函数中的查询器提示并返回主菜单。但是,这似乎导致查询器提示的多个实例保持事件状态,从而导致此错误:

( Node :9756)MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。添加了 11 个导出监听器。使用emitter.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.");
}
}
},

我相信原因是通过从查询器验证函数中返回和调用 main,查询器不会调用其内置的 end 函数,因此每次执行此操作时,查询器创建的事件监听器都不会被删除。

非常感谢有关如何解决此问题的任何帮助,谢谢。

最佳答案

我所做的是创建一个名为 WantToExit 的函数

const WantToExit = () =>
inquirer
.prompt([
{
name: "moreQuery",
type: "confirm",
message: "Want to do anything else?",
},
])
.then((answer) => {
if (answer.moreQuery) return init();
});
请注意,init 是我运行第一个 queryr.prompt 的主要功能,例如
function init() {
inquirer.prompt(initialQuestionsList).then(async (answer) => {
console.log(answer);
})

关于node.js - 如何终止 npm 查询器提示并将控制权返回到主菜单/功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51713333/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com