Electron-forge + Babel + React + JSX:"未知选项base.Children"在生产应用

时间:2017-04-06 22:19:40

标签: node.js electron jsx babel electron-forge

这似乎与BABEL: Unknown option: base.Children有关,但提供的修补程序对我的情况没有帮助。两天前,我有一个Electron应用程序在开发模式下运行(通过'电子伪造开始')和一个打包的应用程序(在'电子伪造包生成的文件夹中启动可执行文件&# 39)。该应用程序继续在开发中运行,它将在生产中执行,但Babel在Web控制台中产生错误:

    Unknown option: base.Children. Check out http://...

这发生在第一个调用我的一个JSX文件的require语句中(还有另一件事:react-forge没有转换JSX,我怀疑我将被告知)关于那个问题的RTFM)。我可以随时弹出相同的错误;我所要做的就是输入" require(' somefile.jsx')"在控制台中,它会做同样的事情。对错误的研究表明,选项管理器的mergeOptions函数在循环期间的某个点传递了React的副本,该循环应该包含预设和插件。同样,在更改应用程序代码后,这并没有开始;我试图更新NPM中的一些软件包,我做的下一个构建产生了这个错误。

我已经完全擦除了node_modules目录并运行了一个全新的“npm install'然后是电子重建'并重新打包应用程序会产生相同的结果。我已经尝试根据Babel网站上的文档在package.json中加入.babelrc内容。再次,开发工作正常,生产失败。创建兼容的.compilerc会产生类似的不同结果。我的生产应用程序如何获得React组件,它应该具有Babel选项?

1 个答案:

答案 0 :(得分:0)

我刚刚找到了解决方案。这是一个组合问题。 React本身和Babel的React预设都回答“反应”。作为预设名称。如果插件丢失但React存在,Babel将拉出React并将其传递给mergeOptions,从而产生所描述的错误。 另一方面,如果您在开发依赖关系和一般依赖关系中错误地要求package.json中的模块(如React预设),则由electron-forge运行的打包子进程将忽略条目下的条目一般依赖。结果:没有预设,而是吐出"缺少预设"错误,Babel只是糟透了React本身并假装它找到了它被告知寻找的预设。