25

React バージョンを 0.12.2 から 0.13.2 に、React-Router を 0.12.4 から 0.13.2 にアップグレードしました。これら 2 つのアップグレードだけを実行すると、Web ページ/アプリを読み込むときに次のエラーが表示されます。

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 コードを無効にすると、エラーが解消されます。反応ルーターがこの問題を引き起こしていないことを確信しているので、投稿をより簡潔にするためにルーティング コードを削除しています。

更新 3: react-d3の新しいタグを作成してくれた @CoryDanielson に感謝します。

パッケージ.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
        }
      ]
    ]
  },
}
4

6 に答える 6

12

私はこれを理解しました。これは、 react-d3のにあるrender関数の問題に帰着します。この関数は、データ配列の最初の要素をサンプリングして、データの型をチェックします。ただし、データ配列が空かどうかを確認するチェックは提供しません。linechart/DataSeries

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一部がまだスローされているため、2つのエラーを関連付けていませんでした。そのため、エラーはアップグレードによって引き起こされた新しいものであり、追加の「読み取りできないx」エラーをマスキングしていたUncaught TypeError: Cannot read property 'x' of undefinedと想定しました。Uncaught TypeError: Cannot read property '_currentElement' of null

この問題を修正するために、まもなく react-d3 にプルリクエストを送信します。ご協力ありがとうございました。

更新: ここにプルリクエストがあります

于 2015-04-22T18:59:04.813 に答える
3

それが役立つ場合は、悪いイベント Name プロパティ (onChange ではなく onItemChange) を使用して、Material-UI DropDownMenu コンポーネントで同じエラーが発生しました。

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

正しいイベント プロップ名を使用することで、この問題は解決しました。

于 2015-05-23T20:50:00.060 に答える
3

0.13.2 でもまったく同じ問題がありましたが、エラーの原因とその解決策は少し異なりました。

エラーは私のnpmバージョンにまで及びました。アップグレード(現在は2.8.4)以来、npm 2.1.4を使用しており、npm update -g npmを実行すると、package.jsonなどに触れることなくすべてを機能させることができました。

それがうまくいくかどうか教えてください!

于 2015-04-28T22:55:36.750 に答える
0

「babel-polyfill」を追加すると、IE11で問題が解決しました

于 2016-12-08T12:11:25.593 に答える