Неожиданная ошибка токена @withRouter

Кажется, каждый раз, когда мне нужно настроить React Router в новом проекте, я сталкиваюсь с чем-то новым, возможно, из-за изменений версии.

Я использую дерево состояний responsejs и mobx (хотя на данный момент ничего из этого не использовал).

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import HomeComponent from './HomeComponent.js';
import {withRouter, Route} from 'react-router'

@withRouter
export default class App extends Component {
  render() {
    return (
       <Route exact path='/' component = {HomeComponent}/>
    );
  }
}

export default App;

Когда я запускаю его, я получаю

ERROR in ./src/components/App.js
Module build failed: SyntaxError /components/App.js: Unexpected token (6:0)

Я также получил предупреждение

 Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option to remove this warning.

Редактировать

По комментарию "Артема Мирченко"

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider  } from 'mobx-react';
import { useStrict } from 'mobx';
import createBrowserHistory from 'history/createBrowserHistory';
import {syncHistoryWithStore } from 'mobx-react-router';
import { Router } from 'react-router'

import AppContainer from './components/App';

const browserHistory = createBrowserHistory();

import stores from '../src/stores/Stores';

const history = syncHistoryWithStore(browserHistory, stores.routingStore);

ReactDOM.render(
    <Provider {... stores}>
        <Router history = {history}>
           <AppContainer />
        </Router>
    </Provider>,      
       document.getElementById('app')
);

import {RouterStore} from 'mobx-react-router';

const routingStore = new RouterStore();
const stores = {
    routingStore
}

export default stores;
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
621
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам необходимо установить плагин babel transform-decorators-legacy.

Через пряжу:

yard add --dev transform-decorators-legacy

Соревнуйтесь в npm:

npm install --save-dev transform-decorators-legacy

И добавьте к плагинам ket в своих опциях babel:

{
 // pressets ....
 "plugins": ["transform-decorators-legacy"]
}

Верно, был так уверен, что это проблема с маршрутизацией. Я также сделал "преобразование-класс-свойства". Вы знаете, насколько экспериментален @withRouter? Думаю, я также должен ссылаться на response-router-dom instea для response-router

chobo2 10.04.2018 18:57

Похоже на ваш код, я думаю, нет необходимости использовать withRouter, вы можете просто использовать BrowserRoter. Вот отличный и простой пример: BrowserRouter

Artem Mirchenko 10.04.2018 19:02

Может быть, я не уверен. Копирую старый проект. В этом проекте я использую историю браузера. Возможно, потому, что я также ссылаюсь на маршрутизатор mobx. также. Я отправлю этот код здесь, а затем решу, заслуживает ли он новых вопросов.

chobo2 10.04.2018 19:39

Это нормально, теперь вы можете обернуть свой <AppContainer> в <Router /> и прикрепить к нему историю браузера. Смотрите еще один пример Маршрутизатор

Artem Mirchenko 10.04.2018 19:46

Хорошо, тогда то, что у меня есть, кажется хорошим, я просто смотрю, как сделать так, чтобы, если я скопирую URL-адрес сейчас, он не выдаст мне ошибку "Cannot GET / something /". Я думал, что devServer: {historyApiFallback: true} исправил эту проблему, но, похоже, не работает

chobo2 10.04.2018 20:00

Попробуйте добавить publicPath: '/' в раздел output конфигурационного файла webpack, в моем случае это поможет.

Artem Mirchenko 10.04.2018 20:25

Другие вопросы по теме