Не удается получить загрузчик Babel для применения к зависимости - PullRequest
0 голосов
/ 27 сентября 2018

Зависимость моего проекта использует функции стрелок, и я не могу заставить загрузчик babel переносить внешнюю зависимость.

Мой раздел модуля выглядит как

module: {
        rules: [
            {test: /\.(js|jsx)$/, loader: 'babel-loader'}
        ]
    }

У меня изначально былоисключить: / node_modules / (?! superagent) / в объекте правил, но удалил его, чтобы убедиться, что это не проблема регулярного выражения.

.babelrc

{
  "presets": [
    "@babel/env",
    "@babel/react"
  ]
}

index.js

import superagent from 'superagent'

superagent.get('http://www.google.com')
    .then(result=>console.log('done'))
    .catch(e=>console.error(e));

Зависимость обидчика в этом случае является суперагентной

Я создал минимальное репо с конфигурацией, которая показывает проблему https://github.com/ksmith97/WebpackIssue

Я не уверен, что еще естьпопробовать здесь

Редактировать: Для ясности, это для поддержки IE 11.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Переместите конфигурацию babelrc непосредственно в загрузчик babel:

const path = require('path');

module.exports = {
    entry: './index.js',
    mode: 'development',
    devtool: 'source-map',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'bundle.js'
    },
    module: {
        rules: [{
            test: /\.(jsx?)$/,
            use: {
                loader: 'babel-loader',
                options: {
                    presets: [
                        "@babel/preset-env",
                        "@babel/preset-react"
                    ]
                }
            },
        }]
    }
};

Эта проблема также застала меня врасплох, но, глядя на документы , вы увидите следующее:

Поиск остановится, как только будет найден каталог, содержащий package.json, поэтому относительная конфигурация применяется только в пределах одного пакета.

А в случае пакетов внутри node_modules,у всех них будет свой собственный файл package.json, который будет игнорировать .babelrc в корне вашего проекта, когда скомпилированный файл находится в пакете внутри node_modules.

Конфигурация загрузчикане имеет этого ограничения.

0 голосов
/ 02 октября 2018

Я клонировал ваш проект и выполнил npm start - он упаковал исходный код в dist/bundle.js. then I ran this file with узел dist / bundle.js`.Получил это:

Using browser-only version of superagent in non-browser environment
Error: Browser-only version of superagent could not find XHR

Чтобы загрузчики Babel работали.

Если вы хотите использовать суперагент для nodejs, прочитайте это - https://github.com/visionmedia/superagent/wiki/SuperAgent-for-Webpack

...