2017-09-25 7 views
1

Je cours sur un comportement étrange du module readline de Node js tout en exécutant le noeud sur le terminal de Linux. Le module fonctionne mais il essaie également d'évaluer l'entrée de l'utilisateur comme s'il s'agissait d'une instruction renvoyant une erreur de référence. C'est juste un test simple que je fais, mais je n'arrive pas à le faire fonctionner ... et j'ai déjà essayé de nombreux tutoriels. Heres mon code:Node js readline continue d'évaluer l'entrée et de renvoyer une erreur

'nodeReadlineTeste':function(){ 

var readline = require('readline'); 

//without terminal:false I was getting double lettering on terminal input... 
var rl = readline.createInterface({input:process.stdin,output:process.stdout,terminal:false}); 

rl.question('What is your name? ',function(resp){getIt(resp)}); 

//this function is to bypass NODE assyncronous nature... I was getting the log before even answering. 
function getIt (resp){console.log(resp); rl.close()}; 

}, 

// Lors de l'exécution de cette méthode et de répondre mon nom, je reçois ce résultat:

> global.nodeReadlineTeste() 
What is your name? undefined 
> Daniel 
ReferenceError: Daniel is not defined 
at repl:1:1 
at ContextifyScript.Script.runInThisContext (vm.js:44:33) 
at REPLServer.defaultEval (repl.js:239:29) 
at bound (domain.js:301:14) 
at REPLServer.runBound [as eval] (domain.js:314:12) 
at REPLServer.onLine (repl.js:440:10) 
at emitOne (events.js:120:20) 
at REPLServer.emit (events.js:210:7) 
at REPLServer.Interface._onLine (readline.js:279:10) 
at REPLServer.Interface._line (readline.js:626:8) 
> Daniel 

N'a pas été READLINE censé éviter exactement cela? Peut-être que je fais une erreur simple, si oui, s'il vous plaît aidez-moi à le trouver. Merci d'avance.

+1

Ce n'est pas nécessairement le problème, mais lorsque vous utilisez le noeud REPL, '>' signifie qu'il attend l'exécution d'une instruction/expression, il n'attend pas actuellement la saisie par l'utilisateur de votre question. Donc, même si cela ne résout pas le problème, vous dites essentiellement à node d'exécuter 'Daniel', ce qu'il n'a aucune idée de comment faire. –

Répondre

1

Vous essayez d'exécuter ce code dans REPL. Enregistrer ce code dans <your_file_name>.js séparé et exécutez node <your_file_name>.js

Le problème est que vous essayez d'exécuter ce code dans REPL et quand vous tapez Daniel dans le nœud de la ligne suivante en essayant de trouver la variable avec le nom Daniel.

+0

Voilà, je sais que c'était une erreur Noob. Je vous remercie. Lorsque vous courez comme vous l'avez demandé, cela a fonctionné comme prévu. Je vais en apprendre plus sur le mode REPL maintenant pour éviter les questions stupides. Merci encore! –