我对如何正确利用Node JS需求感到困惑。
我有一个生成子窗口的Node Webkit应用程序,每个子窗口都需要读取数据并将数据写入sqlite3数据库。
在我的index.html中,有一个用于创建iframe的按钮
<!DOCTYPE html>
<html>
<head>
<script src="index.js"></script>
</head>
<script>
var sqlite3 = require('sqlite3').verbose();
console.log(sqlite3);
</script>
<body>
<!-- CREATE NEW APP IF NEEDED -->
<button onclick="spawnApp()">Spawn App</button>
<div id="containApp">
<!-- RUN INITIAL APP -->
<iframe src="apps/sub.html"></iframe>
</div>
</body>
</html>
spawnApp()是index.js文件中的函数
function spawnApp() {
var varIframe = document.createElement("iframe");
varIframe.src = "apps/sub.html";
var varContainer = document.getElementById("containApp");
varContainer.appendChild(varIframe);
}
它产生的应用程序称为sub.html,它需要与sqlite3建立数据库连接
<!DOCTYPE html>
<html>
<script>
var sqlite3 = require('sqlite3').verbose();
console.log(sqlite3);
</script>
<body>
<h4>Sub App</h4>
</body>
</html>
当我第一次执行该程序时,由于在控制台中获得以下输出,它似乎可以正常工作。
> Object index.html:9
> Object sub.html:6
这是我所期望的,从index.html上的require创建一个对象,然后从初始sub.html(它是一个静态写入iindex.html的iframe)中创建一个对象。
然而,我单击按钮添加一个新的应用程序,我得到以下错误
> Object index.html:9
> Object sub.html:6
> Uncaught ReferenceError: require is not defined sub.html:5
还有什么奇怪的是,如果我按下了刷新按钮,即使没有使用该按钮来创建新的应用程序,我也会遇到类似的错误。
> Object {...} index.html:9
> Uncaught ReferenceError: require is not defined sub.html:5
我不知道是什么原因造成的,我花了很多时间试图弄清楚,为什么需求仅在初始程序启动时起作用?
我相信我已经找到原因并可以解决。
我正在阅读一些Node Q&A论坛,看来Node实际上并不支持iframe,因此在调用node模块时会有一些意外的行为。
不过,解决方法(可能不适合每个人的需要)只是使用divs,而是使用一些jQuery / Javascript将sub.html中的元素写入div中。
这不是一个很好的解决方法,但是我正在使用HTML生成器来显着加快HTML内容的生成,这将使解决方法更加有效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句