使用 babel7 时,forwardRef 不是 buildReactRelayContainer 的函数
forwardRef is not a function at buildReactRelayContainer when using babel7
我正在尝试在使用 React 15.6.2 和 Relay 1.6.2 的前端应用程序上升级到 Babel 7
webpack 包构建成功。
但是我在浏览器中收到以下控制台错误。
webpack_require(...).forwardRef is not a function
at buildReactRelayContainer
我正在使用 webpack 3.12.0
并且在dev dependencies中有babel-plugin-relay
,在.babelrc中设置在plugins的顶部,在webpack中设置在plugins列表的顶部。
请注意,在这个阶段我无法升级到 React 16,因为库使用了 React 15
中已弃用的 propTypes
.babelrc
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"sourceMaps": true,
"plugins": [
"relay",
"babel-plugin-ramda",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-syntax-import-meta",
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-json-strings",
[
"@babel/plugin-proposal-decorators",
{
"legacy": true
}
],
"@babel/plugin-proposal-function-sent",
"@babel/plugin-proposal-export-namespace-from",
"@babel/plugin-proposal-numeric-separator",
"@babel/plugin-proposal-throw-expressions",
"@babel/plugin-proposal-export-default-from",
"@babel/plugin-proposal-logical-assignment-operators",
"@babel/plugin-proposal-optional-chaining",
[
"@babel/plugin-proposal-pipeline-operator",
{
"proposal": "minimal"
}
],
"@babel/plugin-proposal-nullish-coalescing-operator",
"@babel/plugin-proposal-do-expressions",
"@babel/plugin-proposal-function-bind"
]
}
webpack
...
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: [
"@babel/preset-env",
"@babel/preset-react",
{
"plugins": [
["relay", {"schema": "./graphql_schema_builds/private/venue/schema.graphql"}],
"ramda"
]
}
]
}
}
},
...
您正在尝试将不能很好地发挥作用的东西混合在一起。你最好升级到最新版本的 React (16.6~) 和最新版本的 webpack (4.3.0)。他们将与 Babel 7 一起玩得很好。这将是一个巨大的变化,但值得更新!我目前正在更新我去年创建的 React 工作流,它最初使用 webpack 3.6、Babel 6+ 和 React < 16.6,但是当我创建一个新的 React 应用程序时,其中添加了 React 16.6~ 以及 webpack 4,我试图用旧的包命名实现 Babel,但没有用。我的 webpack 配置也不起作用。我不得不做出一些重大改变。这是我更新后的 React 工作流程回购 presentation/dlocumentation 的 link: https://github.com/interglobalmedia/react-workflow-updated-2018 更新尚未完成,但如果您愿意,可以关注我的进度!应该很快就完成了!
我正在尝试在使用 React 15.6.2 和 Relay 1.6.2 的前端应用程序上升级到 Babel 7
webpack 包构建成功。
但是我在浏览器中收到以下控制台错误。
webpack_require(...).forwardRef is not a function at buildReactRelayContainer
我正在使用 webpack 3.12.0
并且在dev dependencies中有babel-plugin-relay
,在.babelrc中设置在plugins的顶部,在webpack中设置在plugins列表的顶部。
请注意,在这个阶段我无法升级到 React 16,因为库使用了 React 15
中已弃用的propTypes
.babelrc
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"sourceMaps": true,
"plugins": [
"relay",
"babel-plugin-ramda",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-syntax-import-meta",
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-json-strings",
[
"@babel/plugin-proposal-decorators",
{
"legacy": true
}
],
"@babel/plugin-proposal-function-sent",
"@babel/plugin-proposal-export-namespace-from",
"@babel/plugin-proposal-numeric-separator",
"@babel/plugin-proposal-throw-expressions",
"@babel/plugin-proposal-export-default-from",
"@babel/plugin-proposal-logical-assignment-operators",
"@babel/plugin-proposal-optional-chaining",
[
"@babel/plugin-proposal-pipeline-operator",
{
"proposal": "minimal"
}
],
"@babel/plugin-proposal-nullish-coalescing-operator",
"@babel/plugin-proposal-do-expressions",
"@babel/plugin-proposal-function-bind"
]
}
webpack
...
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: [
"@babel/preset-env",
"@babel/preset-react",
{
"plugins": [
["relay", {"schema": "./graphql_schema_builds/private/venue/schema.graphql"}],
"ramda"
]
}
]
}
}
},
...
您正在尝试将不能很好地发挥作用的东西混合在一起。你最好升级到最新版本的 React (16.6~) 和最新版本的 webpack (4.3.0)。他们将与 Babel 7 一起玩得很好。这将是一个巨大的变化,但值得更新!我目前正在更新我去年创建的 React 工作流,它最初使用 webpack 3.6、Babel 6+ 和 React < 16.6,但是当我创建一个新的 React 应用程序时,其中添加了 React 16.6~ 以及 webpack 4,我试图用旧的包命名实现 Babel,但没有用。我的 webpack 配置也不起作用。我不得不做出一些重大改变。这是我更新后的 React 工作流程回购 presentation/dlocumentation 的 link: https://github.com/interglobalmedia/react-workflow-updated-2018 更新尚未完成,但如果您愿意,可以关注我的进度!应该很快就完成了!