无法将 babel 加载器应用于依赖项

Dea*_*ron 1 javascript webpack babeljs babel-loader

我的项目的一个依赖项是使用箭头函数,我似乎无法让 babel-loader 转译外部依赖项。

我的模块部分看起来像

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

我最初在规则对象中有 exclude: /node_modules/(?!superagent)/ ,但删除了它以确保它不是正则表达式问题。

.babelrc

{
  "presets": [
    "@babel/env",
    "@babel/react"
  ]
}
Run Code Online (Sandbox Code Playgroud)

索引.js

import superagent from 'superagent'

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

在这种情况下,有问题的依赖是 superagent

我用显示问题的配置创建了一个最小的 repo https://github.com/ksmith97/WebpackIssue

我不确定这里还有什么可以尝试的

编辑:要清楚这是为了 IE 11 支持。

Ale*_*ela 5

将 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"
                    ]
                }
            },
        }]
    }
};
Run Code Online (Sandbox Code Playgroud)

这个问题也让我感到惊讶,但查看文档你会看到:

一旦找到包含 package.json 的目录,搜索将停止,因此相对配置仅适用于单个包。

并且在包内的情况下,node_modules它们都会有自己的package.json文件,.babelrc当正在编译的文件在包内时,这将使项目根目录中的node_modules.

加载程序配置没有这个限制。

  • 对于遇到此问题的任何其他人。这发生在 babel 6.x->7.x 迁移上。全局配置现在应该在 babel.config.js 而不是 .babelrc 中配置 (2认同)