【解决】Electron 引用JQuery 报错 Uncaught ReferenceError: $ is not defined

Electron 的官方文档已经告诉我们:

因为 Electron 在运行环境中引入了 Node.js,所以在 DOM 中有一些额外的变量,比如 module、exports和require。 这导致 了许多库不能正常运行,因为它们也需要将同名的变量加入运行环境中。并给出了一些解决方案。

我在 Electron 中无法使用 jQuery、RequireJS、Meteor、AngularJS.

除了官方给出的解决方案,也收罗了其他的如下方法:
  • 方案一: 更改jq的引用写法:<script>window.$ = window.jQuery = require("./js/jquery.min.js")</script>
  • 方案二: 去掉jQuery中的第一行代码中的模块引入判断代码
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}

改写为

!function(a,b){b(a)}

附上官方的解决方案
  • 将nodeIntegration设为false,不过这样的做法页面就不能使用nodejs和Electron APIs
// 在主进程中
const { BrowserWindow } = require('electron')
let win = new BrowserWindow({
  webPreferences: {
    nodeIntegration: false
  }
})
win.show()
  • 假如你依然需要使用 Node.js 和 Electron 提供的 API,你需要在引入那些库之前将这些变量重命名。缺点是每个需要引用的页面都需要这样去改
<head>
	<script>
		window.nodeRequire = require;
		delete window.require;
		delete window.exports;
		delete window.module;
	</script>
	<script type="text/javascript" src="jquery.js"></script>
</head>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值