我正在使用 Flask 后端和 ReactJS 前端开发一个应用程序。 ReactJS 应用程序已开发并与 webpack 捆绑在一起。
与 webpack 捆绑在一起的客户端渲染一切正常。
我现在尝试使用 python-react 添加服务器端渲染。
但问题是,我必须通过 Jinja2 template 与我的 ReactJS 应用程序共享一些变量在基本模板中index.html其中有 reactjs根组件节点<div id='react-node'></div> .
我必须发送我的routes和config通过 jinja2 发送至我的申请模板如下所示,
//index.html
<!doctype html>
<html>
...
...
<script type='text/javascript'>
var STATIC_IMAGE_ROOT = "{{ url_for('static', filename='img/') }}";
var ROUTES = { ... };
...
</script>
</html>
以上所有js变量都被设置为全局window目的 。
但是当我尝试在 python 中渲染组件时,它会抛出 window 的异常对象ReactRenderingError: react: ReferenceError: window is not defined .
解决此问题的最佳方法是什么?
请您参考如下方法:
在服务器上渲染时没有全局窗口。您可以创建一个假窗口,首先检查该窗口是否存在:
if (typeof(window) == 'undefined'){
global.window = new Object();
}
或者,您可以使用 jsdom ,或类似的库来创建假 DOM。






