diff --git a/src/components/controllers/repl/runner.js b/src/components/controllers/repl/runner.js index f505eb07f..64d5235c3 100644 --- a/src/components/controllers/repl/runner.js +++ b/src/components/controllers/repl/runner.js @@ -36,6 +36,13 @@ export default class Runner extends Component { }); }); + handleRenderError = (error, path) => { + if (this.props.onError) { + patchErrorLocation(error); + this.props.onError({ error, path }); + } + }; + execute(transpiled, isFallback) { const PREACT = { ...require('preact'), @@ -105,7 +112,10 @@ export default class Runner extends Component { } if (vnode) { try { - this.root = render(vnode, this.base); + this.root = render( + {vnode}, + this.base + ); } catch (error) { patchErrorLocation(error); throw error; @@ -119,3 +129,12 @@ export default class Runner extends Component { return
; } } + +class ReplRoot extends Component { + componentDidCatch(error, path) { + this.props.onError(error, path); + } + render({ children }) { + return children; + } +}