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

How do you correctly import react into a node-webkit app?

我正在尝试创建一个 node-webkit 应用程序,我想使用 react.js 作为我的框架。在尝试做出反应并创建一些组件后,我尝试在 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)
....

我是不是做错了什么?我找到的所有文档都表明这是在使用 node.js 时包含 react 的正确方法。我已经安装了 npm react,根据 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 被重命名为)有两个可以执行脚本的上下文——浏览器或 Node。请参阅 NW.js wiki

上的 Determining the context of a script

请注意,您链接到的起始项目使用 browserify 捆绑了它的 JavaScript 并通过 <script> 标签加载它。结果,代码在浏览器上下文中 运行,其中 document 可用。

如果您直接使用 require() 导入代码,则在节点上下文中 运行ning,其中 document 不可用。如果你想进一步了解,如果 React 是用 require() 导入的,你也会遇到使用 React 的问题,因为它会检测它是否在浏览器上下文中执行并相应地运行。