似乎Node.js(版本v0.10.13)返回(
和\n)
之间的命令,这里是一个最小的例子:
require('repl').start({
'eval': function (cmd, context, filename, callback) {
callback(null, cmd);
}
});
行为如下:
$ node repl.js
> asd
'(asd\n)'
>
为什么?如果此功能为documented,那么我无法找到它。
此外,如果这是预期的行为,是否有比做cmd = cmd.slice(1, -2);
更好的解决方案?
答案 0 :(得分:1)
问题已经解决(请参阅2013年8月的commit 9ef9a9de)。现在只有JSON表达式包含在parens中。
答案 1 :(得分:0)
作为一种解决方法,您可以将stdin
流捕获到变量并改为使用它。我认为node是这样做的,因为用户输入应该是一个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);
}
});