React集成i18next后报错:TypeError: react.createContext不是函数
解决React 15.6 + react-i18next 抛出
createContext is not a function 的问题 问题根源
这个报错的核心原因非常清晰:你当前项目用的是React 15.6.x,但你引入的react-i18next新版本依赖了React.createContext API——而这个API是React 16.3版本才正式推出的,React 15.x根本没有这个方法,所以打包后运行时直接触发了TypeError。
可行解决方案
根据你的项目情况,推荐两个方向:
1. 降级react-i18next到兼容React 15的版本
react-i18next从v10.x开始就要求React 16.3+,所以你需要锁定v9.x的稳定版本(搭配i18n v15.x):
# 使用npm安装 npm install react-i18next@9.x i18next@15.x --save # 或者用yarn yarn add react-i18next@9.x i18next@15.x
降级后,你之前参考的官方快速启动配置基本可以沿用,只是部分API细节要对应v9版本(比如withNamespaces的用法和v10+差异不大,不用大幅修改代码)。
2. 升级React到16.3+版本(长期推荐)
如果项目允许升级,这是更彻底的解决方案,不仅能解决i18n的问题,还能用上React后续的诸多新特性:
# npm升级 npm install react@^16.3 react-dom@^16.3 --save # yarn升级 yarn add react@^16.3 react-dom@^16.3
升级后记得检查项目中其他依赖的兼容性,比如react-redux需要v5.x及以上版本才能适配React 16,你当前的项目应该已经满足,但最好确认一下。
额外说明
你怀疑和Webpack有关,其实Webpack本身不是问题所在。不过可以确认一下你的babel配置:你当前用的babel-preset-react@6.24.1是兼容React 15的,不需要额外调整,只要React版本或react-i18next版本到位,就能正常编译运行。
内容的提问来源于stack exchange,提问作者miuosh
相关产品推荐
相关产品推荐

