return _promise.default.resolve(pageLoader.loadPage('/_error')).then(function (_pageLoader$loadPage3) {
      function _temp8(initProps) {
        return _promise.default.resolve(doRender((0, _assign.default)({}, props, {
          err: _err,
          Component: exports.ErrorComponent,
          props: initProps
        }))).then(function () {});
      }

      exports.ErrorComponent = _pageLoader$loadPage3;
      var _props$props = props.props;
      // In production we do a normal render with the `ErrorComponent` as component.
      // If we've gotten here upon initial render, we can use the props from the server.
      // Otherwise, we need to call `getInitialProps` on `App` before mounting.
      return _props$props ? _temp8(props.props) : _promise.default.resolve(utils_1.loadGetInitialProps(_App, {
        Component: exports.ErrorComponent,
        router: exports.router,
        ctx: {
          err: _err,
          pathname: page,
          query: query,
          asPath: asPath
        }
      })).then(_temp8);
    });
 var _temp12 = function () {
   if (!props && Component && Component !== exports.ErrorComponent && lastAppProps.Component === exports.ErrorComponent) {
     var _exports$router = exports.router,
         pathname = _exports$router.pathname,
         _query = _exports$router.query,
         _asPath = _exports$router.asPath;
     return _promise.default.resolve(utils_1.loadGetInitialProps(App, {
       Component: Component,
       router: exports.router,
       ctx: {
         err: err,
         pathname: pathname,
         query: _query,
         asPath: _asPath
       }
     })).then(function (_utils_1$loadGetIniti) {
       props = _utils_1$loadGetIniti;
     });
   }
 }();
Example #3
0
    return _regenerator.default.wrap(function _callee5$(_context5) {
      while (1) {
        switch (_context5.prev = _context5.next) {
          case 0:
            App = _ref6.App, Component = _ref6.Component, props = _ref6.props, err = _ref6.err, _ref6$emitter = _ref6.emitter, emitterProp = _ref6$emitter === void 0 ? exports.emitter : _ref6$emitter;

            if (!(!props && Component && Component !== exports.ErrorComponent && lastAppProps.Component === exports.ErrorComponent)) {
              _context5.next = 6;
              break;
            }

            _exports$router = exports.router, pathname = _exports$router.pathname, _query = _exports$router.query, _asPath = _exports$router.asPath;
            _context5.next = 5;
            return utils_1.loadGetInitialProps(App, {
              Component: Component,
              router: exports.router,
              ctx: {
                err: err,
                pathname: pathname,
                query: _query,
                asPath: _asPath
              }
            });

          case 5:
            props = _context5.sent;

          case 6:
            Component = Component || lastAppProps.Component;
            props = props || lastAppProps.props;
            appProps = (0, _assign.default)({
              Component: Component,
              err: err,
              router: exports.router,
              headManager: headManager
            }, props); // lastAppProps has to be set before ReactDom.render to account for ReactDom throwing an error.

            lastAppProps = appProps;
            emitterProp.emit('before-reactdom-render', {
              Component: Component,
              ErrorComponent: exports.ErrorComponent,
              appProps: appProps
            }); // In development runtime errors are caught by react-error-overlay.

            if (process.env.NODE_ENV === 'development') {
              renderReactElement(react_1.default.createElement(head_manager_context_1.HeadManagerContext.Provider, {
                value: headManager.updateHead
              }, react_1.default.createElement(App, (0, _assign.default)({}, appProps))), appContainer);
            } else {
              // In production we catch runtime errors using componentDidCatch which will trigger renderError.
              onError =
              /*#__PURE__*/
              function () {
                var _ref7 = (0, _asyncToGenerator2.default)(
                /*#__PURE__*/
                _regenerator.default.mark(function _callee4(error) {
                  return _regenerator.default.wrap(function _callee4$(_context4) {
                    while (1) {
                      switch (_context4.prev = _context4.next) {
                        case 0:
                          _context4.prev = 0;
                          _context4.next = 3;
                          return renderError({
                            App: App,
                            err: error
                          });

                        case 3:
                          _context4.next = 8;
                          break;

                        case 5:
                          _context4.prev = 5;
                          _context4.t0 = _context4["catch"](0);
                          console.error('Error while rendering error page: ', _context4.t0);

                        case 8:
                        case "end":
                          return _context4.stop();
                      }
                    }
                  }, _callee4, null, [[0, 5]]);
                }));

                return function onError(_x4) {
                  return _ref7.apply(this, arguments);
                };
              }();

              renderReactElement(react_1.default.createElement(error_boundary_1.default, {
                onError: onError
              }, react_1.default.createElement(head_manager_context_1.HeadManagerContext.Provider, {
                value: headManager.updateHead
              }, react_1.default.createElement(App, (0, _assign.default)({}, appProps)))), appContainer);
            }

            emitterProp.emit('after-reactdom-render', {
              Component: Component,
              ErrorComponent: exports.ErrorComponent,
              appProps: appProps
            });

          case 13:
          case "end":
            return _context5.stop();
        }
      }
    }, _callee5);
Example #4
0
    return _regenerator.default.wrap(function _callee3$(_context3) {
      while (1) {
        switch (_context3.prev = _context3.next) {
          case 0:
            App = props.App, err = props.err;

            if (!(process.env.NODE_ENV !== 'production')) {
              _context3.next = 3;
              break;
            }

            return _context3.abrupt("return", webpackHMR.reportRuntimeError(webpackHMR.prepareError(err)));

          case 3:
            // Make sure we log the error to the console, otherwise users can't track down issues.
            console.error(err);
            _context3.next = 6;
            return pageLoader.loadPage('/_error');

          case 6:
            exports.ErrorComponent = _context3.sent;

            if (!props.props) {
              _context3.next = 11;
              break;
            }

            _context3.t0 = props.props;
            _context3.next = 14;
            break;

          case 11:
            _context3.next = 13;
            return utils_1.loadGetInitialProps(App, {
              Component: exports.ErrorComponent,
              router: exports.router,
              ctx: {
                err: err,
                pathname: page,
                query: query,
                asPath: asPath
              }
            });

          case 13:
            _context3.t0 = _context3.sent;

          case 14:
            initProps = _context3.t0;
            _context3.next = 17;
            return doRender((0, _assign.default)({}, props, {
              err: err,
              Component: exports.ErrorComponent,
              props: initProps
            }));

          case 17:
          case "end":
            return _context3.stop();
        }
      }
    }, _callee3);