你如何正确导入对node-webkit应用程序的反应?

时间:2015-04-29 12:59:58

标签: javascript node.js reactjs node-webkit

我正在尝试创建一个node-webkit应用程序,我想使用react.js作为我的框架。在尝试反应并创建一些组件之后,我尝试在node-webkit app中使用它:

'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'));

所以我无法弄清楚它为什么不起作用。

1 个答案:

答案 0 :(得分:6)

NW.js(node-webkit被重命名为)有两个可以执行脚本的上下文 - 浏览器或节点。请参阅NW.js wiki上的Determining the context of a script

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

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