Хотите улучшить этот вопрос? Update the question so it's on-topic for Stack Overflow на русском.
Закрыт 9 месяцев назад.
Файл index.js
import App from './app';
import { BrowserRouter } from 'react-router-dom';
import ReactDOM from 'react-dom';
ReactDOM.render((
<BrowserRouter>
<App />
</BrowserRouter>
), document.getElementById('root'));
Файл app.js
import Home from './pages/Home/Home';
import React from 'react';
import { HashRouter, Route, Switch } from 'react-router-dom';
class App extends React.Component {
render() {
return (
<HashRouter>
<Switch>
<Route exact path='/' component={Home}/>
</Switch>
</HashRouter>
);
}
}
export default App;
Файл webpack.config
const path = require('path');
const conf = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, './dist'),
filename: '[name].js',
publicPath: 'dist/'
}
};
module.exports = conf;
Ошибка при сборке:
ERROR in ./src/index.js 6:2
Module parse failed: Unexpected token (6:2)
You may need an appropriate loader to handle this file type.
|
| ReactDOM.render((
> <BrowserRouter>
| <App />
| </BrowserRouter>
@ multi (webpack)-dev-server/client?http://localhost:8080 ./src/index.js main[1]
Не понимаю, как исправить ошибку?
По всей видимости не могут распознаться открывающиеся и закрывающиеся скобки тэгов <
и >
. Эта ошибка достаточно часто возникает при начале работы с React. Решение является простым, вам поможет "бабелизация".
Первое, что нужно сделать - это добавить файл .babelrc
в тот же каталог, где лежит файл package.json
. В этом файле необходимо указать пресет react
и env
, получится вот такой файл:
{
"presets": ["env", "react"]
}
Не так давно бабел переехал в монорепу, поэтому в обновленном формате это выглядит так:
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
Данный файл .babelrc
- сообщит babel, какие из пресетов использовать для транспайлинга кода. Обращу ваше внимание, что последовательность указания пресетов важна.
Перед тем, как добавлять файл конфигурации бабела, нужно установить парочку пакетов, для всего этого добра:
babel-loader
- транспайлинг кода и задание пресетовbabel-core
- преобразует код ES6 в ES5babel-preset-react
- пресет, преобразующий JSX в JavaScriptbabel-preset-env
- пресет конвертации кода ES6, ES7 и ES8 в код ES5По ссылкам можно найти и примеры и документацию. Самая важная для вас ссылка - это babel-preset-react
. Ну и webpack.config
конечно же нужно дописать:
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
},
}
]
}
Здесь babel-loader
используется для загрузки наших JSX/JavaScript файлов.
Также, я рекомендую вам посмотреть в сторону style-loader
и css-loader
. Так css-loader
для загрузки и объединения всех CSS файлов в один, а style-loader
добавит все стили внутрь тега документа style. А еще, раз уж на то пошло, то и html-webpack-plugin
не помешает - плагин генерирует HTML файл, затем вставляет в него скрипт и записывает файл в dist/index.html
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пишу свой первый backend для базы данных RethinkDB и столкнулся с такой проблемой, что не могу разобрать запрос в bodyParser
Не могу понять, вот у нас есть функция-конструктор, дальше я создаю сам экземпляр этого конструктора
Использую для работы с MongoDB NodeJS на Windows Server 2012Бывало такое, что, при изменении настроек MongoDB, все базы данных удалялись, а бэкапов для восстановления...