错误"/>
导入 readline 后的 Node.js 错误
我在 Windows 10 Pro 22H2 x64 上使用 Node.js 18.16.0 x64,我刚刚遇到一个奇怪的错误,导致我在导入 readline 后无法使用 Node.js。
我需要一种方法来仅使用内置的而不是任何需要安装的库来获取用户输入。
任何需要 readline 的代码都会触发该错误。
我从这个answer复制粘贴代码:
const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout,
});
readline.question(`What's your name?`, name => {
console.log(`Hi ${name}!`);
readline.close();
});
我明白了:
Welcome to Node.js v18.16.0.
Type ".help" for more information.
> const readline = require('readline').createInterface({
... input: process.stdin,
... output: process.stdout,
... });
undefined
>
>
rreeaaddlliinnee..qquueessttiioonn((``WWhhaatt''ss yyoouurr nnaammee??``,, nnaammee ==>> {{
...
ccoonnssoollee..lloogg((``HHii $${{nnaammee}}!!``));;
...
rreeaaddlliinnee.lloossee(());;
...
}}));;
然后在我按下 Enter node.exe 后立即自行关闭。
我也试过这个
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
function readLineAsync(message) {
return new Promise((resolve, reject) => {
rl.question(message, (answer) => {
resolve(answer);
});
});
}
// Leverages Node.js' awesome async/await functionality
async function demoSynchronousPrompt() {
var promptInput = await readLineAsync("Give me some input >");
console.log("Won't be executed until promptInput is received", promptInput);
rl.close();
}
Welcome to Node.js v18.16.0.
Type ".help" for more information.
> const readline = require('readline');
solve(answer);
undefined
>
> const rl = readline.createInterface({
... input: process.stdin,
... output: process.stdout
... });
undefined
>
>
ffuunnccttiioonn rreeaaddLLiinneeAAssyynncc((mmeessssaaggee)) {{
...
rreettuurrnn nneeww PPrroommiissee((((rreessoollvvee,, rreejjeecctt)) ==>> {{
...
rrll..qquueessttiioonn((mmeessssaaggee,, ((aannsswweerr)) ==>> {{
...
rree }}));;
...
}}));;
...
}}
undefined
>
>
//// LLeevveerraaggeess NNooddee..jjss'' aawweessoommee aassyynncc//aawwaaiitt ffuunnccttiioonnaalliittyy
undefined
>
aassyynncc ffuunnccttiioonn ddeemmooSSyynncchhrroonnoouussPPrroommpptt(()) {{
...
vvaarr pprroommppttIInnppuutt == aawwaaiitt rreeaaddLLiinneeAAssyynncc((""GGiivvee mmee ssoommee iinnppuutt >>""));;
...
ccoonnssoollee..lloogg((""WWoonn''tt bbee eexxeeccuutteedd uunnttiill pprroommppttIInnppuutt iiss rreecceeiivveedd"",, pprroommppttIInnppuutt));;
...
rrll.lloossee(());;
...
}}
同样的事情发生了。
怎么回事?
回答如下:不是错误。您在 REPL 中运行了它,创建了一个从标准输入到标准输出的流,因此之后您在 REPL 中键入的任何内容都会被复制。从文件运行它。
更多推荐
导入 readline 后的 Node.js 错误
发布评论