IE11, Adobe Analytics, React-Router с сообщением об ошибке: «Инвариантное нарушение: вы не должны использовать <Switch>за пределами <Router>» - PullRequest
2 голосов
/ 27 апреля 2019

При загрузке корректно работающего приложения React в IE 11 с Adobe Analytics на той же странице выдается сообщение об ошибке:

Invariant Violation: You should not use <Switch> outside a <Router>

Ошибка не появляется во всех других браузерах, и это касается ТОЛЬКО IE 11. Он также не зависит от используемого типа маршрутизатора.

Если я достану Adobe Analytics =>, это сработает.


Вот код, который я использую:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Test Page</title>
        <SCRIPT src="//assets.adobedtm.com/<hash>-staging.js"
        ></SCRIPT>
    </head>
    <body>
        <noscript> You need to enable JavaScript to run this app. </noscript>
        <div id="reactRoot"></div>
    </body>
</html>

Вот раздел React-Router с полифилами, которые я использую

require('babel-polyfill');
require('es6-promise').polyfill();

class AppRouter extends Component {
    render() {
        return (
            <Router>
                <ErrorBoundary>
                    <Switch>
                        <Route exact path="/" component={Home} />
                        <Route path="/type/:type/:lang?" component={FormContainer} />
                        <Route path="/success/:type/:lang?" component={SuccessContainer} />
                        <Route path="/error/:code?" component={ErrorContainer} />
                        <Route component={NotFound} />
                    </Switch>
                </ErrorBoundary>
            </Router>
        );
    }
}

Моя цель - сделать так, чтобы он отображался в IE 11

1 Ответ

0 голосов
/ 29 апреля 2019

Проблема была в полифиллах.

require('babel-polyfill');
require('es6-promise').polyfill();

Мы заменили их на

import '@babel/polyfill';
import * as ES6Promises from 'es6-promise';
//other imports here
ES6Promises.polyfill();

и сделал наверняка, чтобы они произошли ВПЕРВЫЕ во входном файле JS.

После этого он работал в IE 11.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...