安装 babel-polyfill 和 babel-preset-es2015 后,我有一个错误:插件/预设文件不允许导出对象,只允许导出函数。
这是package.json
中的开发依赖项
"devDependencies": {
"@babel/cli": "^7.4.4",
"@babel/core": "^7.4.5",
"@babel/plugin-proposal-class-properties": "^7.4.4",
"@babel/preset-env": "^7.4.5",
"@babel/preset-react": "^7.0.0",
"babel-core": "^6.26.3",
"babel-loader": "^8.0.6",
"babel-polyfill": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"browser-sync": "^2.26.5",
"browser-sync-webpack-plugin": "^2.2.2",
"redux-devtools": "^3.5.0",
"webpack": "^4.32.2",
"webpack-cli": "^3.3.2",
"webpack-notifier": "^1.7.0"
}
和.babelrc
{
"presets": [ "@babel/preset-env", "@babel/preset-react", "es2015", "stage-0" ],
"plugins": [ "@babel/plugin-proposal-class-properties" ]
}
此错误与项目中发现的一些旧 babel 内容有关。
在您预设的情况下,您将"@babel/preset-env"和"@babel/preset-react"更新为最新版本,但 es2015 和 stage-0 是较旧的依赖项,也需要更新和替换。
因此,在es2015的情况下,由于您正在运行@babel/preset-env,我实际上认为您不需要运行es2015或stage-0,但是只要您在预设中拥有它们,您就会收到错误。
此外,您还应该考虑提供完整的错误,例如在我的情况下,它是类似的
ERROR in ./demo2.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error: Plugin/Preset files are not allowed to export objects, only functions. In /Users/bryanrasmussen/projects/Tiling/demo/node_modules/babel-preset-es2015/lib/index.js
at createDescriptor (/Users/bryanrasmussen/projects/Tiling/demo/node_modules/@babel/core/lib/config/config-descriptors.js:178:11)
at /Users/bryanrasmussen/projects/Tiling/demo/node_modules/@babel/core/lib/config/config-descriptors.js:109:50
at Array.map (<anonymous>)
at createDescriptors (/Users/bryanrasmussen/projects/Tiling/demo/node_modules/@babel/core/lib/config/config-descriptors.js:109:29)
at createPresetDescriptors (/Users/bryanrasmussen/projects/Tiling/demo/node_modules/@babel/core/lib/config/config-descriptors.js:101:10)
at /Users/bryanrasmussen/projects/Tiling/demo/node_modules/@babel/core/lib/config/config-descriptors.js:58:104
at cachedFunction (/Users/bryanrasmussen/projects/Tiling/demo/node_modules/@babel/core/lib/config/caching.js:62:27)
at cachedFunction.next (<anonymous>)
at evaluateSync (/Users/bryanrasmussen/projects/Tiling/demo/node_modules/gensync/index.js:244:28)
at sync (/Users/bryanrasmussen/projects/Tiling/demo/node_modules/gensync/index.js:84:14)
因此,您可以看到那里的额外信息如何帮助试图查看您的问题的人意识到问题出在哪里。