【问题标题】:Node.js REPL funny behavior with custom eval function带有自定义 eval 函数的 Node.js REPL 有趣行为
【发布时间】:2013-10-04 13:10:15
【问题描述】:

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

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

行为如下:

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

这是为什么呢?如果这个 featuredocumented,那么我找不到它。

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

【问题讨论】:

    标签: javascript node.js read-eval-print-loop


    【解决方案1】:

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

    【讨论】:

    • 在不稳定版本中修复。
    【解决方案2】:

    作为一种解决方法,您可以将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);
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      相关资源
      最近更新 更多