6

似乎 Node.js(版本 v0.10.13)返回包裹在(and之间的命令\n),这是一个最小的例子:

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

行为如下:

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

这是为什么?如果记录了此功能,那么我无法找到它。

另外,如果这是预期的行为,是否有比做更好的解决方案cmd = cmd.slice(1, -2);

4

2 回答 2

1

该问题已得到修复(请参阅2013 年 8 月的提交 9ef9a9de)。现在只有 JSON 表达式被包裹到括号中。

于 2014-12-29T19:20:46.307 回答
0

作为一种解决方法,您可以将stdin流捕获到变量并改用它。我认为 node 这样做是因为用户输入应该是一个 js 表达式,这很好包裹在 closure 中()

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);
    }
});
于 2013-10-29T00:28:51.957 回答