在.babelrc中指定的Babel 6预设无法正常工作

6

正如标题所示,根据文档,使用新的Babel 6,我们现在应该传递插件/预设,因为默认情况下它不会处理我们的代码。

因此,我在我的项目目录中创建了一个.babelrc文件,其中包含以下内容(就像文档中一样)

{
  "presets": ["es2015"]
}

然而这种方法行不通。 由于我正在使用webpack和babel-loader,我找到了一个不同的答案,建议在webpack配置中添加类似以下内容:
{
     test: /\.js$/, exclude: /node_modules/, loader: "babel", query: {
         presets: ["es2015"]
     }
}

这样运行是有效的。所以我的问题是,这是新版Babel中的一个错误还是我错过了明显的错误?我曾经使用Babel 5和Webpack,并且我能够毫无问题地在 .babelrc 中指定babel配置...

提前感谢

编辑:仅当在Babel加载器之前运行eslint加载器时才会出现问题。不过我刚刚升级到最新的babel-loader 6.2.0,一切都正常了。

    module: {
        preLoaders: [
            { test: /\.js$/, exclude: /node_modules/, loader: "eslint"}
        ],
        loaders: [
            { test: /\.js$/, exclude: /node_modules/, loader: "babel"},
            { test: /\.css$/, exclude: /node_modules/, loader: "style!css!postcss"}
1个回答

2
似乎出现了一个与有关的问题。这个问题应该已经在版本6.1.0中得到解决。
你可以查看release/v6.1.0的总结。
 * release/v6.1.0:
 Update CHANGELOG.md and package.json
 Set source file name relative to options.sourceRoot
 Allow babelrc to be specified for cache purposes
 Add BABEL_ENV || NODE_ENV to default cacheIdentifier

因此,更新babel-loader就足够了。

谢谢,我刚刚更新到6.1.0版本,但是问题仍然存在,出现了相同的“意外标记”错误。(将预设放回webpack配置中仍然按预期工作) - luanped
@luanped 你是否使用除 babel 之外的其他加载器?你能发布你的 webpack.config.js 吗? - dreyescat
嗨@dreyescat,已在问题中添加了配置文件。感谢您的帮助。 - luanped
1
@luanped 我猜到了 :)。我还没有弄清楚为什么...但我不知道为什么将eslint引入其中会导致这个错误。只需删除eslint-loader,您就会发现它可以与.babelrc一起正常工作。我并不是提出这个作为解决方案,只是想指出问题可能来自哪里。 - dreyescat
非常感谢@dreyescat,确实这样做可以解决问题。那么您知道这是Babel或Webpack的错误吗?再次感谢。 - luanped
@luanped 不太确定...但我会猜测是与Babel相关的问题。最近它进行了一次重大更新。 - dreyescat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接