Webpack не распознает jsx только из модуля пакета - PullRequest
0 голосов
/ 05 марта 2020

У меня есть пакет, который экспортирует реагирующие компоненты.

Когда я устанавливаю пакет и компонент и запускаю сайт, я получаю сообщение об ошибке из веб-пакета:

Ошибка разбора модуля: неожиданный токен (84:24) Вам может понадобиться соответствующий загрузчик для обработки этого типа файла,

Эта ошибка относится к строке, содержащей элемент jsx.

Когда я скопировал компонент и импортировал его, он работал ок.

Это мой webpack.config. js (без файла .babelr c, я также пробовал с файлом .babler c):

module.exports = {
  entry: "./src/index.js",
  mode: "development",
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /(node_modules|bower_components)/,
        loader: "babel-loader",
        options: { presets: ["@babel/env", "@babel/preset-react"] }
        },
        {
          test: /\.css$/,
          use: ["style-loader", "css-loader"]
        }            
    ]
  },
  resolve: { extensions: ["*", ".js", ".jsx"] },
  output: {
    path: path.resolve(__dirname, "dist/"),
    publicPath: "/dist/",
    filename: "bundle.js"
  },
  devServer: {
    contentBase: path.join(__dirname, "public/"),
    port: 3000,
    publicPath: "http://localhost:3000/dist/",
    hotOnly: true
  }
};

1 Ответ

1 голос
/ 05 марта 2020

Попробуйте указать libraryTarget в выводе.

  output: {
    path: path.resolve(__dirname, "dist/"),
    publicPath: "/dist/",
    filename: "bundle.js",
    libraryTarget: "commonjs2",
  },

libraryTarget указывает, как будет экспортироваться ваш компонент. Обратитесь к документации для деталей: https://webpack.js.org/configuration/output/#outputlibrarytarget

...