React-dnd: Babel 错误 - 使用移除的 Babel 5 选项

创建于 2016-03-12  ·  16评论  ·  资料来源: react-dnd/react-dnd

我是 babel 新手,我设置了一个新项目,安装了 babel,通过 bower 安装了 react-dnd,我的 .babelrc 有以下几行
{ "presets": ["es2015", "stage-0", "react"] }
模块构建失败:ReferenceError:

[BABEL] <path>\bower_components\react-dnd\src\index.js: Using removed Babel 5 option: <path>\bower_components\react-dnd\.babelrc.stage - Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets

我究竟做错了什么

最有用的评论

@walter0331

装载机:'宝贝装载机'

这应该是一回事。

所有16条评论

嗨@jagan-veeraraghavan! 你如何在 Bower 中包含 react-dnd ? 你应该这样这样

看起来您可能会改为将 Bower 指向整个 Github 存储库。 这将不起作用,因为它包含.babelrc ,这是一个与您使用的 Babel 版本不兼容的 Babel 5 配置文件 (6)。 npm 发行版忽略了这个文件(顺便说一句,我们建议在 Bower 上使用 npm)。

如果我错了,请随时重新打开该问题。 我还推荐gitter 室来解决像这样的支持问题。

嗨,我遇到了类似的问题,使用 webpack 和 babel 6。

ERROR in ./~/dnd-core/lib/index.js
Module build failed: ReferenceError: [BABEL] /node_modules/dnd-core/lib/index.js: 
Using removed Babel 5 option: /node_modules/dnd-core/.babelrc.stage - Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets

这是我的设置:

包.json

{
  "devDependencies": {
    "babel-core": "^6.3.26",
    "babel-loader": "^6.2.1",
    "babel-preset-es2015": "^6.3.13",
    "babel-preset-react": "^6.3.13",
    "babel-preset-stage-0": "^6.5.0",
    "css-loader": "^0.23.1",
    "extract-text-webpack-plugin": "^1.0.1",
    "file-loader": "^0.8.5",
    "jquery": "^2.2.1",
    "less": "^2.6.1",
    "less-loader": "^2.2.2",
    "style-loader": "^0.13.0",
    "url-loader": "^0.5.7",
    "webpack": "^1.12.9",
    "webpack-dev-server": "^1.14.0"
  },
  "dependencies": {
    "babel-polyfill": "^6.3.14",
    "expose-loader": "^0.7.1",
    "jquery": "^2.1.4",
    "lodash": "^3.10.1",
    "react": "^0.14.7",
    "react-dnd": "^2.1.3",
    "react-dnd-html5-backend": "^2.1.2",
    "react-dom": "^0.14.7",
    "tracking": "^1.1.2"
  }
}

.babelrc

{
  "presets": ["react", "es2015", "stage-0"]
}

网络包

var webpack = require('webpack');
var ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
  module: {
    loaders: [
      {
        test: /\.js$/,
        loader: 'babel-loader'
      }
    ]
  }
};

任何人都可以帮助我吗?

啊哈,我通过在 webpack.conf 中排除node_modules来修复它:dancers:

      {
        exclude: /(node_modules|bower_components)/,
        test: /\.js$/,
        loader: 'babe-loader'
      },

它解决了我的问题,非常感谢!

@walter0331

装载机:'宝贝装载机'

这应该是一回事。

@billyjanitsch你考虑过更新 babel 吗? 你愿意接受它的公关吗?

我在使用 Webpack 和 Babel 6 时遇到了这个问题。与 @walter0331 类似。 我需要让这个通过我的 Babel 运行,因为我们正在对node_modules进行自定义缩小,所以排除node_modules对我没有帮助。

澄清一下,我认为每个人的意思都是“babel-loader”而不是“babe-loader”。

loader: 'babel-loader'

我正在尝试从 babel5.x 升级到 6.x 并遇到同样的错误。 我正在使用 react、redux 和 babel 6 和 webpack。

下面是我的 webpack 配置(部分)
模块: {
装载机: [
{ 测试:/.svg$/,排除:/.less$/,加载器:'svg-inline'},
{ 测试:/.coffee$/,装载机:'咖啡装载机'},
{ 测试:/.jsx?$/,排除:/node_modules/,
装载机:
['react-hot-loader/webpack', 'babel-loader?' + JSON.stringify({
预设:['es2015','stage-0','react'],
插件:['transform-decorators-legacy',
['transform-async-to-module-method',
{'模块':'蓝鸟','方法':'协程'}
]]
})
]
},
{ test: /.less/, loader: 'style-loader!css-loader!less-loader' },
{ test: /.css/, loader: 'style-loader!css-loader' },
{ 测试: /.json$/, 加载器: 'json-loader' },
{ test: /.gif$/, loader: "url-loader?mimetype=image/png" },
{ test: /.woff(2)?(\?v=[0-9].[0-9].[0-9])?$/, loader: "url-loader?limit=10000&minetype=application/字体-woff" },
{ test: /.(ttf|eot|svg)(\?v=[0-9].[0-9].[0-9])?$/, loader: "file-loader" },
{ test: /jquery.js$/, loader: 'expose?jQuery' },
]
},

.babelrc

{
"预设": ["es2015", "react", "stage-0"],
"插件": ["transform-decorators-legacy", ["transform-async-to-module-method", {
“模块”:“蓝鸟”,
“方法”:“协程”
}]]]
}

我注意到一件事,此错误消息主要出现在我从“bluebird”导入 Promise 的文件中。

任何人都可以帮忙吗?

撞。 有没有办法在构建时忽略依赖项的 babel 配置......?

@walter0331非常感谢您,在我阅读您的解决方案之前,这个问题并没有让我如此困惑。 但是我不明白为什么这样设置可以解决的原理:exclude: /(node_modules|bower_components)。

@ry928330基本上, disposables库用于react-dnd ,而disposables使用的是过时的 babel 版本 Babel 5(这个库没有维护)。 如果包含在 webpack 配置中,则会产生冲突,因为我们现在使用的是 Babel 版本 6。 所以这里更好的解决方案(至少对我有用)不一定排除所有node_modules,而只排除冲突的一个。

在你的 babel-loader webpack 配置中添加exclude: /(disposables)/ ,例如:

{
     test: /\.js$/,
     exclude: /(disposables)/,
     loader: 'babel-loader',
}

这才是正确的解决方案。 引擎盖下使用什么版本的 Babel disposables无关紧要。 真正的问题是你试图用 Babel 编译node_modules 。 这并不总是安全的,除非您知道自己在做什么并且只选择加入特定的包(或使用另一个信号,例如engines字段并忽略配置),否则您不应该这样做。

也就是说我在[email protected]发布了一个“修复”。 尽管如此,如果您在node_modules编译所有内容,那么您就会遇到问题。

mix.webpackConfig({ module: { rules: [{ test: /\.jsx?$/, exclude: /(node_modules|bower_components)/, use: { loader: 'babel-loader', options: Config.babel() } }] } })

它的作品,谢谢!

我通过添加 [] 修复
presets: [ ["es2015", { loose: false }] ]

这发生在我无意中将stage: 1到我的server/.babelrc文件之后。

{
  "presets": ["es2015", "stage-0"],
  "plugins": ["transform-runtime"],
   stage: 1
}

通过删除此修复

{
  "presets": ["es2015", "stage-0"],
  "plugins": ["transform-runtime"],
}
此页面是否有帮助?
0 / 5 - 0 等级