在React app中,render()失败,因为document.getElementById('root')返回null

时间:2017-05-21 10:00:32

标签: javascript node.js reactjs

更新2 我的设置存在问题。我使用react-scriptsyarn upgrade react-scripts升级到版本1.0.2(为0.9.5),现在它实际上再次运行。

更新:我开始认为我的node.js设置存在问题。 即使是较旧的提交,我相信之前已经工作过,也不再有效。 git bisect我没有到达任何地方(虽然我很高兴我了解到它)。

我很确定我不是唯一一个有这个问题的人,因为我不止一次地看过这个问题。但是,迄今为止提供的答案都没有帮助我解决它。

我有一个React应用,在render()(在index.js中)失败了:

render(
    <Provider store={store}>
        <Router
            routes={config.router.routes}
            history={browserHistory}
        />
    </Provider>,
    document.getElementById('root')
);

函数的最后一行返回null。在Chrome开发者控制台中,这一点变得清晰了(我添加了console.log以显示结果为null):

root element not found

由于render()获取null作为第二个参数,因此发生特定错误是相当明显的。

然而,对于我的生活,我无法找出它返回null的原因。我很乐意编码,直到昨晚它停止工作的某个时候。我的public/index.html看起来像这样:

<!doctype html>
<html lang="en">
<head>
    <script>
    window.settings = {
        "apiUrl": "https://api.goes.here",
        "imgUrl": "https://api.goes.here"
    };
    </script>
</head>
<body>
    <div id="root"></div>
</body>
</html>

(我已经清除了实际的api值。)

我也没有看到任何错误。现在,鉴于问题突然发生,我可能会错过一些非常明显的问题。为了完整起见,这是我的依赖项:

"devDependencies": {
    "react-scripts": "^0.9.5"
  },
  "dependencies": {
    "bootstrap": "^3.3.7",
    "classnames": "^2.2.5",
    "compression": "^1.5.2",
    "firebase": "^4.0.0",
    "jquery": "^3.2.1",
    "linc-profile-generic-react-redux-routerv3": "^3.4.2",
    "prop-types": "^15.5.8",
    "query-string": "^4.3.2",
    "react": "^15.5.4",
    "react-dom": "^15.5.4",
    "react-helmet": "^5.0.3",
    "react-redux": "^5.0.4",
    "react-router": ">=3.0.0 <4.0.0",
    "react-spinkit": "^2.1.1",
    "redux": "^3.6.0",
    "redux-form": "^6.7.0",
    "redux-logger": "^3.0.1",
    "redux-thunk": "^2.1.0"
  },

我希望有人可以对此有所了解。我已经没想完了。

谢谢! 桑德

2 个答案:

答案 0 :(得分:1)

您应该直接使用ReactDOM.render方法;

示例:

ReactDOM.render(
    <Provider store={store}>
        <Router
            routes={config.router.routes}
            history={browserHistory}
        />
    </Provider>,
    document.getElementById('root')
);

如果您已经这样做了,我很抱歉,您是否正在尝试从类组件中执行render方法并不完全清楚。

答案 1 :(得分:0)

大。我将react-tools从0.9.5升级到1.0.2,现在一切都像魅力一样。我想也许在某些时候我已经升级到这个版本,但未能提交它。

非常感谢回答这个问题的所有人!干杯!