我正在尝试创建一个 node-webkit 应用程序,并且我想使用 react.js 作为我的框架。在尝试使用react并创建一些组件后,我尝试在 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。参见 Determining the context of a script在 NW.js 维基上
请注意,您链接到的起始项目使用 browserify 捆绑了它的 JavaScript,并通过 <script>
加载它。标签。结果,代码在浏览器上下文中运行,其中 document
可用。
如果您使用 require()
直接导入您的代码,它在 Node 上下文中运行,其中 document
不可用。如果你有进一步的了解,如果 React 是用 require()
导入的,你也会遇到使用 React 的问题。 ,因为它会检测它是否在浏览器上下文中执行并相应地运行。
关于javascript - 如何正确地将 react 导入到 node-webkit 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29944526/