jquery - 在 Nodejs 上下文中使用 jQuery 时遇到问题

标签 jquery node.js electron

我正在使用 atom/electron 编写一个应用程序它完全是根据现有的 html/css/js 源构建的。

经过几个小时的调整 grunt 脚本,我终于得到了一些东西。但是,我不断收到以下错误:

Uncaught ReferenceError: jQuery is not defined

经过一番尝试和把头撞到墙上后,我终于意识到 jQuery source 的这一点很聪明。是罪魁祸首。

特别是这一行

if ( typeof module === "object" && typeof module.exports === "object" ) {
    // Assume node context
}

所以我不会发疯。 jQuery 实际上已加载,但它被引导到 Node 上下文而不是浏览器上下文,导致所有后续插件提示 window.jQuery 未定义。

我的第一个想法是在 jquery 源代码后面添加这个厚颜无耻的代码片段

if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
    global.jQuery = global.$ = window.jQuery = window.$ = module.exports;
}

这看起来已经成功了。但是,我不是原子/Electron/网络套件方面的专家。有谁知道解决这个问题的更干净的方法以及是否更改 module.exports <script> 中包含的文件的标签明智吗?

干杯

最佳答案

我也遇到了同样的问题。我不知道在哪里找到了这个解决方案,但这对我来说效果很好。

如果你想在 Electron 中使用 jQuery,你应该在每个 html 文件中将它作为一个模块。比 jQuery 作品或其他框架需要 jQuery。

<script>$ = jQuery = require("jquery")</script>

要安装 jQuery 模块,请使用 npm

npm install --save jquery

关于jquery - 在 Nodejs 上下文中使用 jQuery 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32341862/

相关文章:

javascript - Electron - 在打开保存对话框之前写入文件

javascript - 如何获取当前 session 登录用户的ID?

node.js - 如何为用户需要登录的网页编写单元测试

linux - 没有 .NET 的 Windows 身份验证 header 。可能的?

javascript - 复制数组的内存有效方法

javascript - 如何通过 Electron 菜单导航页面 - angularjs 应用程序

jquery - 如何在ul上创建反弹效果

javascript - 在 PreventDefault() 之后触发事件无法按预期工作

javascript - 使用 php 重新加载内容

javascript - 如何更新托盘图标