Skip to content

repl: Prevent REPL crash when tab-completed with Proxy objects

If the proxy objects don't have a valid hasOwnPropertyNames trap, REPL crashes with a TypeError, as per the bug report https://github.com/nodejs/io.js/issues/2119

> var proxy = Proxy.create({ fix: function() { return {}; } });
undefined
> proxy.<tab>
TypeError: Proxy handler #<Object> has no 'getOwnPropertyNames' trap
    at Function.getOwnPropertyNames (native)
    at repl.js:644:40
    at REPLServer.defaultEval (repl.js:169:5)
    at bound (domain.js:254:14)
    at REPLServer.runBound [as eval] (domain.js:267:12)
    at REPLServer.complete (repl.js:639:14)
    at REPLServer.complete [as completer] (repl.js:207:10)
    at REPLServer.Interface._tabComplete (readline.js:377:8)
    at REPLServer.Interface._ttyWrite (readline.js:845:14)
    at ReadStream.onkeypress (readline.js:105:10)

This patch traps the error thrown and issues Error message.

Merge request reports

Loading