第一次找不到模块

我正在为我的桌面应用程序使用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.exenw.exe打开app/index.html时, node-webkit找不到./libre.js模块。 但是,当我刷新(与正确的刷新button)它神奇的作品。 为什么?

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

看来你的node.js文件在你调用的时候还没有被加载。 打开dev console并检查出错信息(如果有的话)。

我会build议更新你的librecraft.js如下:

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

希望这个帮助。

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