Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js REPL具有自定义eval函数的有趣行为_Javascript_Node.js_Read Eval Print Loop - Fatal编程技术网

Javascript Node.js REPL具有自定义eval函数的有趣行为

Javascript Node.js REPL具有自定义eval函数的有趣行为,javascript,node.js,read-eval-print-loop,Javascript,Node.js,Read Eval Print Loop,Node.js(版本v0.10.13)似乎返回了包装在(和\n)之间的命令,下面是一个简单的示例: require('repl').start({ 'eval': function (cmd, context, filename, callback) { callback(null, cmd); } }); 行为如下所示: $ node repl.js > asd '(asd\n)' > 为什么呢?如果这个功能是,那么我无法找到它 此外,如果这是预

Node.js(版本v0.10.13)似乎返回了包装在
\n)
之间的命令,下面是一个简单的示例:

require('repl').start({
    'eval': function (cmd, context, filename, callback) {
        callback(null, cmd);
    }
});
行为如下所示:

$ node repl.js
> asd
'(asd\n)'
>
为什么呢?如果这个功能是,那么我无法找到它


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

作为一种解决方法,您可以捕获
stdin
流到一个变量,然后使用它。我认为node这样做是因为用户输入应该是一个js表达式,最好用闭包
()
包装


该问题已经解决(参见2013年8月)。现在只有JSON表达式被包装到parens中。

修复了不稳定版本中的问题。
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);
    }
});