如何正确地将反应导入到node-webkit应用程序中?

我正在尝试创build一个node-webkit应用程序,并且我想使用react.js作为我的框架。 尝试反应并创build一些组件后,我尝试在node-webkit应用程序中按以下方式使用它:

'use strict'; require('react'); 

每当我打开我的node-webkit应用程序,其中包括上面的脚本在身体的末尾我得到的错误:

 ReferenceError: document is not defined at Object.<anonymous> (C:\Users\rtol\Dropbox\Code\Node- Webkit\WallpaperManager3.0\node_modules\react\lib\CSSPropertyOperations.js:31:7) .... 

难道我做错了什么? 我发现的所有文档都表明,这将是使用节点时包含反应的正确方法。 我有npm安装反应,根据package.json它是版本0.13.2。

例如, react-nodewebkit入门工具包的index.jsx如下所示。

 var React = require('react'); var HelloWorld = require('./components/HelloWorld.jsx'); React.render(<HelloWorld />, document.getElementById('content')); 

所以我不知道为什么它不起作用。

NW.js(这是node-webkit被重命名为的)有两个脚本可以执行的上下文(浏览器或节点)。 请参阅确定 NW.js wiki上的脚本的上下文

请注意,您链接的初始项目使用browserify捆绑其JavaScript,并通过<script>标记加载它。 因此代码正在浏览器上下文中运行,在哪个document可用。

如果您直接使用require()来导入代码,那是在Node上下文中运行的,哪个document不可用。 如果你有更进一步的话,如果它是用require()导入的话,那么你也会碰到使用React的问题,因为它会检测它是否在浏览器上下文中执行,并相应地执行。