2013-10-04 73 views
5

看來,Node.js的(版v0.10.13)返回封裝(\n)的命令,這裏有一個小例子:自定義eval函數的Node.js REPL滑稽行爲

require('repl').start({ 
    'eval': function (cmd, context, filename, callback) { 
     callback(null, cmd); 
    } 
}); 

行爲是如下:

$ node repl.js 
> asd 
'(asd\n)' 
> 

這是爲什麼?如果這功能documented然後我無法找到它。

此外,如果這是預期的行爲,是否有更好的解決方案比做cmd = cmd.slice(1, -2);

回答

1

問題已經解決(請參閱2013年8月的commit 9ef9a9de)。現在只有JSON表達式被包裝成parens。

+0

固定在不穩定的版本。 – cYrus

0

作爲一種解決方法,您可以將stdin流捕獲到一個變量,然後使用它。我認爲節點是這樣做的,因爲用戶輸入應該是一個js表達式,這很好包裹在關閉()

var buffer = ''; 

process.stdin.on('data', function(chunk) { 
    buffer += chunk.toString('utf8'); 
}); 

require('repl').start({ 
    input: process.stdin, 
    output: process.stdout, 
    'eval': function (cmd, context, filename, callback) { 
     console.log(buffer); 
     buffer = ''; 
     callback(null, true); 
    } 
});