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

Rob*_*bin 1 javascript node.js node-webkit reactjs

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

'use strict';

require('react');
Run Code Online (Sandbox Code Playgroud)

每当我打开我的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)
....
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?我发现的所有文档都表明这是在使用节点时包含反应的正确方法.我有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'));
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*nan 6

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

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

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