我将React版本从0.12.2升级到0.13.2,并将React- Router从0.12.4升级到0.13.2。仅做这两次升级,什么也不做,现在在加载网页/应用程序时出现以下错误:
Uncaught TypeError: Cannot read property '_currentElement' of null
任何想法可能是什么原因造成的?我似乎已经提到了潜在的React-Router错误,但没有明确的定义。
导致错误的特定行是:
ReactRef.detachRefs(internalInstance, internalInstance._currentElement);
更新1: 我还基于@BinaryMuse的评论,将reactify从1.0.0版本升级到1.1.0,并将react-router- bootstrap(我尚未真正使用)从0.9.1升级到0.13.0-没变化。
更新2: 经过进一步测试,我将其范围缩小为react-d3的问题。从我的站点禁用react-d3代码会导致错误消失。我正在删除路由代码,以使帖子更加简洁,因为我现在相当有信心react- router不会引起此问题。
更新3: 感谢@CoryDanielson为react-d3创建新标签。
package.json
{ "author": "me", "name": "my project", "description": "my awesome project", "version": "0.1.0", "dependencies": { "bootstrap": "^3.3.2", "d3": "^3.5.5", "font-awesome": "^4.3.0", "jquery": "^2.1.3", "react": "^0.13.2", "react-bootstrap": "^0.21.0", "react-d3": "^0.3.1", "react-router": "^0.13.2", "react-router-bootstrap": "~0.13.0", "reflux": "^0.2.6", "uuid": "^2.0.1" }, "devDependencies": { "browser-sync": "^2.2.2", "browserify": "^9.0.3", "del": "^1.1.1", "envify": "^3.4.0", "gulp": "^3.8.11", "gulp-css-url-adjuster": "^0.2.3", "gulp-jshint": "^1.9.2", "gulp-minify-css": "^0.5.1", "gulp-sourcemaps": "^1.5.0", "gulp-uglify": "^1.1.0", "gulp-util": "^3.0.4", "gulp-watch": "^4.1.1", "reactify": "~1.1.0", "vinyl-buffer": "^1.0.0", "vinyl-source-stream": "^1.0.0", "watchify": "^2.4.0" }, "browserify": { "transform": [ [ "reactify", { "es6": false } ] ] }, }
我已经弄清楚了。它归结为同一个问题render函数发现反应-D3的linechart/DataSeries。该函数通过对数据数组的第一个元素进行采样来检查数据类型。但是,它不提供任何检查以查看数据数组是否为空。
render
linechart/DataSeries
我曾经看到过来自以下方面的错误LineChart:
LineChart
Uncaught TypeError: Cannot read property 'x' of undefined
但是,我忽略了它们,因为它们是访问错误,并且没有阻止应用程序运行。React中的某些内容必须已从v0.12.4更改为v.0.13.2,以使这些以前无害的错误现在可以解决。我阅读了v0.13.0,v0.13.1和v.0.13.2的发行说明,但没有发现任何说明为什么会发生此新错误的信息。我还没来得及看一下diff的代码。
我没有连接这两个错误,因为LineChart仍然有部分抛出,Uncaught TypeError: Cannot read property 'x' of undefined所以我只是假定该Uncaught TypeError: Cannot read property '_currentElement' of null错误是由升级引起的新错误,并且掩盖了其他无法读取的x错误。
我将很快提交一个pull-react -d3的请求来解决这个问题。感谢大家的帮助。
更新: 这是请求请求