第一次找不到模块

时间:2013-12-10 11:20:12

标签: javascript node.js node-webkit

我正在为我的桌面应用使用node-webkit引擎。 这是我的文件结构:

app/
|- scripts/
   |- librecraft.js
|- index.html
|- package.json
|- libre.js

应用程序/ index.html的

<!DOCTYPE html>
<!-- .... -->
<script>var libre = require('./libre.js');</script>
<script src="scripts/librecraft.js"></script>

应用程序/脚本/ librecraft.js

libre.doSomething();

应用程序/ libre.js

exports.doSomething = function () { return 42 };

问题

当我运行nw.exe并从中app/index.html打开node-webkit时,./libre.js找不到模块{{1}}。但是当我刷新(使用正确的刷新按钮)时,它神奇地起作用。为什么呢?

2 个答案:

答案 0 :(得分:1)

如果您想知道为什么它在刷新页面时有效,您必须知道您的nodejs文件在应用程序的整个生命周期内都会被加载一次。当应用程序启动时,将返回值(doSomething)更改为其他内容,保存文件并刷新页面;你会注意到返回的值是旧值。

当您调用它时,似乎尚未加载node.js文件。打开dev console并查看错误消息(如果有)。

我建议您更新librecraft.js,如下所示:

//librecraft.js
var libre = require('../libre.js');
var val = libre.doSomething(); //
console.log(val);

希望得到这个帮助。

答案 1 :(得分:1)

  • 最好不要直接在HTML中包含或编写脚本, 当您使用node.js函数时。另外,这样做的缺点 技术是,脚本(你可能想要做一些 每次重新加载页面时都会重新加载后台任务。
  • 请改用“node-main”。这里: https://github.com/rogerwang/node-webkit/wiki/node-main
  • 要记住一件简单的事情:node-webkit应用程序不是网站:)