Webpack с модулями react, дающими неожиданный токен
пытался использовать модуль npm react-spin, но когда я пытаюсь создать пакет.js с webpack, я получаю следующую ошибку:
Module parse failed: /Users/nir/browsewidget/node_modules/react-spin/src/main.js Line 29: Unexpected token <
You may need an appropriate loader to handle this file type.
| render: function() {
| return (
| <span ref="container" />
| );
| }
@ ./js/widget.jsx 4:14-35
Я предполагаю, что в этом модуле есть jsx, но я не понимаю, почему его нельзя построить? Требуется ли react-spin дополнительная конфигурация при создании пакета?
вот мой полный webpack.конфиг.js:
module.exports = {
entry: "./js/widget.jsx",
output: {
path: __dirname,
filename: "bundle.js"
},
module: {
loaders: [
{
test: /.jsx$/,
loader: 'jsx-loader?insertPragma=React.DOM&harmony'
}
]
},
externals: {
//don't bundle the 'react' npm package with our bundle.js
//but get it from a global 'React' variable
'react': 'React'
},
resolve: {
extensions: ['','.js','.jsx']
}
};
1 ответов
ваш загрузчик настроен только на преобразование файлов, которые заканчиваются на .jsx
:
test: /\.jsx$/,
(знак доллара означает конец строки.)
вы можете изменить его на
test: /\.jsx?$/,
трансформировать .js
и .jsx
файлы, но запуск каждого файла JavaScript в node_modules
через загрузчик JSX, вероятно, будет довольно медленным.
я считаю, вы должны быть в состоянии установить на /node_modules/
и include
вариант для специфического модуль, о котором вы заботитесь (react-spin
), но лучшим решением является то, что пакеты не используют JSX в опубликованной версии JavaScript-автор react-spin
может быть открыт для запроса pull на этот счет. (Edit: похоже, что он уже есть, см. thomasboyt / react-spin#3)
наконец, react-spin
очень маленький, поэтому вы рассматриваете возможность реализации его самостоятельно в своем собственном проекте (чтобы вам не приходилось беспокоиться о проблемах с загрузчиком webpack).