我正在尝试创建一个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'));
所以我无法弄清楚它为什么不起作用。
答案 0 :(得分:6)
NW.js(node-webkit被重命名为)有两个可以执行脚本的上下文 - 浏览器或节点。请参阅NW.js wiki上的Determining the context of a script
请注意,您链接的初始项目使用browserify捆绑其JavaScript并通过<script>
标记加载它。因此,代码正在浏览器上下文中运行,document
可用。
如果您直接使用require()
导入代码,则会在节点上下文中运行,其中document
不可用。如果你进一步使用React,如果它是用require()
导入的,你也会遇到问题,因为它检测它是否在浏览器上下文中执行并且表现相应。