When including a trailing newline character (or carriage return character) in a string that is supplied to a write function, an RangeError is thrown (RangeError: Maximum call stack size exceeded). The following code snippet shows the context:
elseif(trimmedLine.match(/^h(elp)?$/i)){readlineInstance.write("Help\n");}Here is an error log I created by issuing a command that passes the console output to a text file (npm start > console_output.txt):
path\GitHubBackup\console\console.js:12
var trimmedLine = line.trim();
^
RangeError: Maximum call stack size exceeded
at String.trim (native)
at consoleOptions (path\GitHubBackup\console\console.js:12:25)
at Interface.<anonymous> (path\GitHubBackup\console\console.js:46:14)
at emitOne (events.js:82:20)
at Interface.emit (events.js:169:7)
at Interface._onLine (readline.js:210:10)
at Interface.<anonymous> (readline.js:340:12)
at Array.forEach (native)
at Interface._normalWrite (readline.js:339:11)
at Interface.write (readline.js:309:49)
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\***\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "start"
npm ERR! node v5.3.0
npm ERR! npm v3.5.2
npm ERR! code ELIFECYCLE
npm ERR! github.backup@0.1.0 start: `node main.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the github.backup@0.1.0 start script 'node main.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the github.backup package
,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node main.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs github.backup
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls github.backup
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! path\GitHubBackup\npm-debug.log
The ordinary error log doesn't show the details above, only an exit status entry:
(...Break...)
Help
Help
Help
Help
Help
Help
Help
Help
Help
Help
Help
Help
Help
Help
Help
Help
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\***\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "start"
npm ERR! node v5.3.0
npm ERR! npm v3.5.2
npm ERR! code ELIFECYCLE
npm ERR! github.backup@0.1.0 start: `node main.js`
npm ERR! Exit status 3221225725
npm ERR!
npm ERR! Failed at the github.backup@0.1.0 start script 'node main.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the github.backup package
,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node main.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs github.backup
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls github.backup
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! path\GitHubBackup\npm-debug.log
The full code:
"use strict"// CONSTANTSvarCONSOLE_PROMPT_NAME="GitHubBackup";// DEPENDENCIESvarreadline=require("readline");constchalk=require("chalk");// -CONSOLE OPTIONSfunctionconsoleOptions(line,readlineInstance){vartrimmedLine=line.trim();if(trimmedLine.match(/^q(uit)?$/i)){readlineInstance.write("Closing...");readlineInstance.close();}elseif(trimmedLine.match(/^h(elp)?$/i)){readlineInstance.write("Help\n");}readlineInstance.prompt();}module.exports=function(){return{// -CONSOLE FUNCTIONScreateConsole: function(){varreadlineInstance;// Setting up a prompt using the "readline" modulereadlineInstance=readline.createInterface({input: process.stdin,output: process.stdout});readlineInstance.setPrompt(chalk.green(CONSOLE_PROMPT_NAME+">"));readlineInstance.prompt();// Monitoring user actionsreadlineInstance.on("SIGINT",function(){readlineInstance.close();});readlineInstance.on("line",function(line){consoleOptions(line,this);});returnreadlineInstance;}};}Is this a valid behaviour of the readline module? Note again that this only happens with trailing line endings.
When including a trailing newline character (or carriage return character) in a string that is supplied to a write function, an RangeError is thrown (
RangeError: Maximum call stack size exceeded). The following code snippet shows the context:Here is an error log I created by issuing a command that passes the console output to a text file (
npm start > console_output.txt):The ordinary error log doesn't show the details above, only an exit status entry:
The full code:
Is this a valid behaviour of the readline module? Note again that this only happens with trailing line endings.