Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获得;错误:插件/预设文件不允许导出对象,只能导出功能;来自babel预设react app/index.js_Javascript_Reactjs_Babeljs_Create React App - Fatal编程技术网

Javascript 获得;错误:插件/预设文件不允许导出对象,只能导出功能;来自babel预设react app/index.js

Javascript 获得;错误:插件/预设文件不允许导出对象,只能导出功能;来自babel预设react app/index.js,javascript,reactjs,babeljs,create-react-app,Javascript,Reactjs,Babeljs,Create React App,因此,我有一个使用create react app引导的项目,当尝试使用react scripts build进行构建时,我收到以下错误输出: 模块构建失败:错误:插件/预设文件不允许导出对象,只能导出函数。 根据输出,错误来自node\u modules/babel preset react app/index.js,如下所示: 'use strict'; const create = require('./create'); var env = process.env.BABEL_ENV

因此,我有一个使用
create react app
引导的项目,当尝试使用
react scripts build
进行构建时,我收到以下错误输出:

模块构建失败:错误:插件/预设文件不允许导出对象,只能导出函数。

根据输出,错误来自
node\u modules/babel preset react app/index.js
,如下所示:

'use strict';

const create = require('./create');
var env = process.env.BABEL_ENV || process.env.NODE_ENV;

module.exports = create(env);
module.exports({
 presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-flow']
})
我正在使用Babel 7,下面是
package.json
中的相关依赖包列表:

"dependencies": {
    ...
    "react": "^16.5.2",
    "react-dom": "^16.4.0",
    "react-loadable": "^5.4.0",
    "react-router-dom": "^4.3.1",
    "react-scripts": "1.1.5"
},
"devDependencies": {
    "@babel/cli": "^7.1.0",
    "@babel/core": "^7.1.0",
    "@babel/preset-env": "^7.1.0",
    "@babel/preset-flow": "^7.0.0",
    "@babel/preset-react": "^7.0.0",
    "babel-core": "^7.0.0-bridge.0",
    "babel-eslint": "^9.0.0"
    ...
}
我的
babel.config.js
如下所示:

'use strict';

const create = require('./create');
var env = process.env.BABEL_ENV || process.env.NODE_ENV;

module.exports = create(env);
module.exports({
 presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-flow']
})

为了解决这个问题,我在互联网上做了尽可能多的挖掘工作。最终找到了许多类似的帖子,但没有一个建议的解决方案适合我。我在
babel.config.js
中看到了一两个提到的,包括
@babel/preset env
@babel/preset react
中的预设。希望社区能够分享一些见解。

从Babel7开始,他们希望函数返回config。它更适合缓存

现在要解决您的问题,请尝试以下方法

function loadConfig() {
  return {
    presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-flow']
  }
}
module.exports = loadConfig;

我在GitHub上发布了一个关于这个问题的帖子,并通过与两个CreateReact应用程序贡献者合作解决了这个问题。关于使用CreateReact应用程序时Babel的工作方式,有一些非常微妙的地方值得注意。我绝对建议你们读一读这段对话,看看你们中那些和我在这里遇到同样问题的人

对于使用Create React App的用户,我要强调一件事:删除所有与babel相关的devdependency并重新安装节点模块。Create React App不关心或查找模块中的
.babelrc
babel.config.js
文件。它们是无用的(至少目前是这样,因为只有时间才能证明这种行为是否会改变)。如果这不起作用,请另外删除
包锁.json
文件以及
节点_模块
,然后重试


我的软件包中唯一保留的
babel
devdency(很可能不是我的问题的原因)是
babel-eslint
,因为我在我的项目中使用了eslint。

如果这是在一个干净的
create-react-app
安装上,那么这是需要改进的。这也可能是第一个提问的地方,而不是第一个提问的地方,因为制作create-react应用程序的人会在那里寻找问题/错误报告。@Mike'Pomax'Kamermans感谢你的建议。我就是这么做的,并且能够解决我的问题。我将在这里发布一个答案,带有我与他们一起在GitHub上启动的问题线程的链接。在我与两位撰稿人的对话中,我发现了一些有用的信息。旁注-您的
react
react dom
版本应该始终匹配。使用
create react app
all
。babelrc
babel.config.js
文件被忽略。不幸的是,除非您决定从CreateReact应用程序中弹出,否则这不会起作用。这将是一个完全不同的故事。那么你应该把这个函数称为什么呢?我面临着一个类似的问题;但我不能删除巴贝尔,因为我必须执行用笑话和酶编写的测试。你有这样的场景吗?@PritamSadhukhan如果你的应用是使用Create-React-app引导的,那么你不需要显式地将Babel声明为依赖项或devDependency。它内置于CRA中。您应该能够通过
react scripts test--env=jsdom
删除手动安装的Babel依赖项,而不会出现运行测试的问题。但是,如果您退出,那么您将手动管理所有依赖项,并且需要显式声明Babel。你处于哪种情况?