Javascript Can';第一次找不到模块

Javascript Can';第一次找不到模块,javascript,node.js,node-webkit,Javascript,Node.js,Node Webkit,我正在为我的桌面应用程序使用节点webkit引擎。 这是我的文件的结构: app/ |- scripts/ |- librecraft.js |- index.html |- package.json |- libre.js app/index.html app/libre.js 问题 当我运行nw.exe并从中打开app/index.html时,节点webkit找不到模块/libre.js。但当我刷新(用右刷新按钮)时,它神奇地工作了。为什么?如果你想知道刷新页面时它为什么会工作,你必

我正在为我的桌面应用程序使用
节点webkit
引擎。 这是我的文件的结构:

app/
|- scripts/
   |- librecraft.js
|- index.html
|- package.json
|- libre.js
app/index.html app/libre.js 问题
当我运行
nw.exe
并从中打开
app/index.html
时,
节点webkit
找不到模块
/libre.js
。但当我刷新(用右刷新按钮)时,它神奇地工作了。为什么?

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

调用时,您的
节点.js
文件似乎尚未加载。打开
开发控制台
,查看错误消息(如果有)

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

//librecraft.js
var libre = require('../libre.js');
var val = libre.doSomething(); //
console.log(val);
希望对您有所帮助。

  • 最好不要直接在HTML中包含或编写脚本, 当您使用node.js函数时。还有,这种方法的缺点是什么 技术是,脚本(您可能希望从中执行一些操作) 后台任务)将在每次重新加载页面时重新加载
  • 改用“节点主节点”。在这里:
  • 记住一件简单的事情:节点webkit应用程序不是网站:)
libre.doSomething();
exports.doSomething = function () { return 42 };
//librecraft.js
var libre = require('../libre.js');
var val = libre.doSomething(); //
console.log(val);