readline 在提供之前处理输入
readline processes input before it is provided
我正在尝试制作一个程序,将 2 封以逗号分隔的电子邮件作为输入,并分别向它们发送一封电子邮件。我使用 readline 模块接收输入,使用 nodemailer 模块发送邮件。
代码:
const readline = require('readline')
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('enter emails seperated by a comma: ', (ans) => {
var players = ans.split(',');
mailOptions1.to = players[0];
mailOptions2.to = players[1];
nextFunction();
}
这里的 nextFunction 是生成电子邮件文本并发送的函数。
当我执行此代码时,问题 'enter emails separated by a comma: ' 显示,当我输入电子邮件时,它突然尝试发送邮件并给出一个未定义收件人的错误(显然,因为我在定义收件人的过程)
任何关于为什么会发生这种情况以及如何解决它的见解将不胜感激。 :)
更新:正如 Jeff 所指出的,代码背后的逻辑很好。似乎我的应用程序的其他部分导致了错误。这个问题也许无关紧要。 :/
我对此进行了测试,它对我有用。我将以下内容放入 rl-test.js
:
const readline = require('readline');
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('enter emails separated by a comma: ', (ans) => {
var players = ans.split(',');
console.log(players[0] + '\n' + players[1]);
});
并使用 node rl-test.js
从命令行调用它,结果如下:
$ node rl-test.js
enter emails seperated by a comma: foo,bar
foo
bar
不知道该告诉你什么,但想让你知道它确实有效。你能试试这个吗?
我正在尝试制作一个程序,将 2 封以逗号分隔的电子邮件作为输入,并分别向它们发送一封电子邮件。我使用 readline 模块接收输入,使用 nodemailer 模块发送邮件。
代码:
const readline = require('readline')
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('enter emails seperated by a comma: ', (ans) => {
var players = ans.split(',');
mailOptions1.to = players[0];
mailOptions2.to = players[1];
nextFunction();
}
这里的 nextFunction 是生成电子邮件文本并发送的函数。
当我执行此代码时,问题 'enter emails separated by a comma: ' 显示,当我输入电子邮件时,它突然尝试发送邮件并给出一个未定义收件人的错误(显然,因为我在定义收件人的过程)
任何关于为什么会发生这种情况以及如何解决它的见解将不胜感激。 :)
更新:正如 Jeff 所指出的,代码背后的逻辑很好。似乎我的应用程序的其他部分导致了错误。这个问题也许无关紧要。 :/
我对此进行了测试,它对我有用。我将以下内容放入 rl-test.js
:
const readline = require('readline');
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('enter emails separated by a comma: ', (ans) => {
var players = ans.split(',');
console.log(players[0] + '\n' + players[1]);
});
并使用 node rl-test.js
从命令行调用它,结果如下:
$ node rl-test.js
enter emails seperated by a comma: foo,bar
foo
bar
不知道该告诉你什么,但想让你知道它确实有效。你能试试这个吗?