2015-11-14 17 views
5

私は現在Courseraでコースを受けており、node.jsコードを使って2次式を計算する練習をしています。すべてのコードが与えられています。この演習はnode.jsを知るためのものですが、依然としてプロンプトを入力する際に​​問題が発生しています。
コードはここにある:Node.jsプロンプト入力をスキップ

var quad = require('./quadratic'); 

var prompt = require('prompt'); 

prompt.get(['a', 'b', 'c'], function (err, result) { 
    if (err) { return onErr(err); } 
    console.log('Command-line input received:'); 
    console.log('a: ' + result.a); 
    console.log('b: ' + result.b); 
    console.log('c: ' + result.c); 

     quad(result.a,result.b,result.c, function(err,quadsolve) { 
      if (err) { 
       console.log('Error: ', err); 
       } 
       else { 
      console.log("Roots are "+quadsolve.root1() + " " + quadsolve.root2()); 
       } 
     }); 
}); 

見ての通り、私はpromptモジュールを使用していますが、私はaの入力を入力すると、cmdがbの入力をスキップし、 `Cを入力するように私を要求しています、それは間違いの原因となります。この問題を解決する方法

enter image description here

、そしてなぜそれが起こるのでしょうか?

+0

値を入力する際のキーストロークは何ですか?おそらく、何かがあなたが期待していない入力または「返品」としてカウントされます。 – clay

+0

@clay単純に数字を入力してEnterを押します。私もenterを押すだけで、結果は同じです。 –

+0

あなたはWindowsにいますか?あなたはこの問題にぶつかるかもしれません:https://github.com/flatiron/prompt/issues/131 – clay

答えて

3

Windowsでの開発へようこそ! Windowsでは\nの行末にキャリッジリターンが使用されているため、おそらくこのバグが表示されます。このような正規表現でプロンプトを強制的にトークン化することができます。

var schema = { 
    properties: { 
     a: { pattern: /^[0-9]+$/, message: 'a', required: true }, 
     b: { pattern: /^[0-9]+$/, message: 'b', required: true }, 
     c: { pattern: /^[0-9]+$/, message: 'c', required: true } 
    } 
    }; 

    prompt.get(schema, function (err, result) { 
     // .. rest of your code 
    }); 
+0

ありがとうございます!!! –

関連する問題