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。你处于哪种情况?