Я пытаюсь настроить Webpack 4.6.0 с помощью React, и у меня возникла проблема:

...
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules(?!/myuimodule)/,
use: ['babel-loader'],
},
...
и в .babelrc
{
"presets": [
"@babel/react",
[
"@babel/preset-env",
{
"useBuiltIns": "usage",
"modules": false
}
]
],
"plugins": [
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-syntax-dynamic-import"
]
}
почему babel-loader не исключает myuimodule?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы получаете эту ошибку из-за вашей линии exclude. Webpack пытается собрать ваш пакет. Он находит где-то в дереве зависимостей, начиная с entry, эту строку
import Progress from './path/to/Progress.jsx'
Затем он пытается проанализировать и загрузить ваш файл в пакет. Он не находит правил для этого файла, поэтому загрузчики не выполняют свою работу. Он обнаруживает тег jsx и не может его проанализировать, поэтому выдает ошибку Неожиданный токен и напоминает разработчику о необходимости проверить наличие загрузчика для этого файла.
И он не может найти загрузчик для этого файла, потому что вы явно исключили этот файл из обработки загрузчиком.
В декларации rulesexclude: /node_modules(?!/myuimodule)/
Но буквально говорит exclude вместо include. Попробуйте заменить на include.
Можете ли вы попробовать исключить как функцию? Как упоминалось здесь github.com/webpack/webpack/issues/2031#issuecomment-28351715 0
Или вы можете добавить include и перечислить в виде массива все ваши исходные каталоги, включая myuimodule.
Кажется сумасшествием, но попробуйте просто переименовать .babelrc в babel.config.json. Не знаю, почему это работает, но это решило проблему дважды для меня. Не помню, где впервые откопал этот раствор.
Progress.jsx находится в myuimodule, который я включаю