How do I get console input in spidermonkey JavaScript?

JavascriptInputConsoleSpidermonkey

Javascript 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');

prompt in IE

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...');
   }
});

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questioncamel_spaceView Question on Stackoverflow
Solution 1 - JavascriptMooGooView Answer on Stackoverflow
Solution 2 - JavascriptZazView Answer on Stackoverflow
Solution 3 - JavascriptKeyvanView Answer on Stackoverflow
Solution 4 - JavascriptArcherLView Answer on Stackoverflow
Solution 5 - JavascriptM. Emre YalçınView Answer on Stackoverflow