【问题标题】:jquery not working in nw.js (node webkit)jquery 在 nw.js 中不起作用(节点 webkit)
【发布时间】:2018-08-04 17:41:58
【问题描述】:

由于源代码安全功能,我正在将我的桌面应用程序从 electron 切换到 nw.js。

我在我的 nodejs 文件中需要模块 jquery-confirm,我收到此错误:

Uncaught Error: jquery-confirm requires jQuery

我通过以下方式修复此错误:

var $ = require('jquery');
window.jQuery = $;
var jconfirm = require('jquery-confirm');

并像这样在 index.html 中导入 js 文件:

<script>require('./bot.js')</script>

因为如果我需要这样的 js 文件,我会得到相同的 jquery 错误:

<script src="bot.js"></script>

当我修复上述错误并使用 nw.js 启动应用程序时,它会立即崩溃并给出此错误:

TypeError: $(...).button is not a function

第一个问题: 我假设jquery有问题。当我在 index.html 中导入它时,它根本不起作用。但是,在 js 文件中需要它后,我仍然遇到问题。我该如何解决这个问题?

第二个问题: 如果我使用 'require' 而不是导入我的 js 文件,为什么我没有收到 Uncaught Error: jquery-confirm requires jQuery 错误?

【问题讨论】:

    标签: javascript node-webkit nw.js nwjs


    【解决方案1】:

    这是 Node Webkit 中的 javascript 上下文问题。我们必须确保通过使用脚本标记的src 属性将浏览器内所需的所有javascript(窗口上下文)带入该上下文。

    Node Webkit 将来自 require() 语句的 JavaScript 放在 nodejs 全局上下文中 - 并使其在浏览器中不可用。

    因此,如果文件位于相反的上下文中,我们会看到诸如 $ is not defined$(...).button() is not a function 之类的错误。

    【讨论】:

    • 第一次没看到。 $(...).button 不是 jQuery 的函数。按钮方法是 jQueryUI 不是 jQuery 的方法。
    • 但是当我使用电子并在 html 而不是 js 文件中导入 jquery 时,它可以正常工作
    • 那么,这将我们带回到第一方。如果我没记错的话,在index.html 文件中使用require() 会将包含的脚本放入节点上下文中。因此,您应该使用&lt;script src="..."&gt; 表单将脚本放入window 上下文中。
    • 当我这样做时,jquery 不知何故未定义。我检查了 jquery-confirm 库,当 jquery 未定义时它给出了该错误
    • 您需要将所有window 上下文JS 文件放在src 属性中。不仅仅是 jQuery。你把jquery-confim 也放在&lt;script src="..."&gt; 里了吗?
    猜你喜欢
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2015-10-08
    • 1970-01-01
    相关资源
    最近更新 更多