How do I get console input in spidermonkey JavaScript?
JavascriptInputConsoleSpidermonkeyJavascript Problem Overview
I'm currently using spidermonkey to run my JavaScript code. I'm wondering if there's a function to get input from the console similar to how Python does this:
var = raw_input()
Or in C++:
std::cin >> var;
I've looked around and all I've found so far is how to get input from the browser using the prompt()
and confirm()
functions.
Javascript Solutions
Solution 1 - Javascript
Good old readline();
.
See MDN (archive).
Solution 2 - Javascript
In plain JavaScript, simply use response = readline()
after printing a prompt.
In Node.js, you'll need to use the readline module: const readline = require('readline')
Solution 3 - Javascript
As you mentioned, prompt
works for browsers all the way back to IE:
var answer = prompt('question', 'defaultAnswer');
For Node.js > v7.6, you can use console-read-write
, which is a wrapper around the low-level readline
module:
const io = require('console-read-write');
async function main() {
// Simple readline scenario
io.write('I will echo whatever you write!');
io.write(await io.read());
// Simple question scenario
io.write(`hello ${await io.ask('Who are you?')}!`);
// Since you are not blocking the IO, you can go wild with while loops!
let saidHi = false;
while (!saidHi) {
io.write('Say hi or I will repeat...');
saidHi = await io.read() === 'hi';
}
io.write('Thanks! Now you may leave.');
}
main();
// I will echo whatever you write!
// > ok
// ok
// Who are you? someone
// hello someone!
// Say hi or I will repeat...
// > no
// Say hi or I will repeat...
// > ok
// Say hi or I will repeat...
// > hi
// Thanks! Now you may leave.
Disclosure I'm author and maintainer of console-read-write
For SpiderMonkey, simple readline
as suggested by @MooGoo and @Zaz.
Solution 4 - Javascript
You can try something like process.argv
, that is if you are using node.js
to run the program.
console.log(process.argv)
=> Would print an array containing
[ '/usr/bin/node', '/home/user/path/filename.js', 'your_input' ]
You get the user provided input via array index, i.e., console.log(process.argv[3])
This should provide you with the input which you can store.
Example:
var somevariable = process.argv[3]; // input one
var somevariable2 = process.argv[4]; // input two
console.log(somevariable);
console.log(somevariable2);
If you are building a command-line program then the npm package yargs would be really helpful.
Solution 5 - Javascript
Node.js has built-in readline module.
one example:
const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.question(`Are you sure? (yes/no): `, async answer => {
if (answer.toLocaleLowerCase() === 'yes') {
console.log('processing...');
}
else {
console.log('aborting...');
}
});