将React升级到0.13.2会导致:" Uncaught TypeError:无法读取属性' _currentElement' of null"

时间:2015-04-22 01:29:23

标签: javascript d3.js reactjs typeerror react-d3

我将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:我刚刚将版本从1.0.0升级到1.1.0,并将react-router-bootstrap(我还没有实际使用)从0.9.1升级到0.13.0基于@ BinaryMuse的评论 - 没有变化。

更新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
        }
      ]
    ]
  },
}

5 个答案:

答案 0 :(得分:12)

我已经弄明白了。它归结为react-d3 renderlinechart/DataSeries功能的问题。该函数通过对数据数组的第一个元素进行采样来检查数据类型。但是,它不会检查数据数组是否为空。

我之前以<{p>>的形式看到来自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的发行说明,但没有发现任何说明为什么会出现这种新错误的原因。我没有时间看代码差异。

我没有连接这两个错误,因为LineChart的部分仍然抛出Uncaught TypeError: Cannot read property 'x' of undefined所以我只是假设Uncaught TypeError: Cannot read property '_currentElement' of null错误是由升级引起的新错误并且掩盖了额外的错误无法读取x错误。

我将很快提交一个pull-request来反应-d3以纠正这个问题。谢谢大家的帮助。

更新: here is the pull-request

答案 1 :(得分:3)

我和0.13.2有同样的问题,然而,我的错误原因和解决方案有点不同:

错误归结为我的npm版本。我使用npm 2.1.4自升级(现在在2.8.4)和运行npm update -g npm后,我能够在不触及package.json或其他任何东西的情况下完成所有工作。

请告诉我这是否适合您!

答案 2 :(得分:3)

如果它可以帮助我使用错误事件Name prop(onItemChange而不是onChange)与Material-UI DropDownMenu组件发生同样的错误。

    <DropDownMenu menuItems={menuItems} onChange={this._onItemClick}/>

使用正确的事件道具名称为我解决了这个问题。

答案 3 :(得分:0)

在IE11中添加“babel-polyfill”为我解决了这个问题

答案 4 :(得分:-1)

当我的app.jsx文件引用List组件而我忘记将其包含在

中时出现此错误
var List = require('./list');