因项目需求,将一个网站用electron封装做个客户端。其它都没问题,只是 jquery不能正常导入,一运行有jquery的网页就会报, Uncaught ReferenceError: $ is not defined 这个错误,之前有解决electron的办法是用nodejs的require, window.$ = window.jQuery = require("…/…/lib/jquery-2.2.0.min.js"); 如果网页是本地的地址没有任何总是可以正常使用,但是网页是是服务器端的远程地址electron.BrowserWindow.loadURL(“http://www.xxx.com”),nodejs的require不能导入自己的和第三方安装的模块,只能导node自带的模块(fs,http,path…)。 这个总是已经卡了好几天了,大神们有什么好的办法让有jquery在网页正常在electron环境下运行吗?
jquery文件一并打包进项目 /assets/js/
(自建目录) ,然后如下引用
const APP_PATH = require('path').join(_dirname, '../../../app.asar');
window.$ = window.jQuery = require(path.join(APP_PATH, './assets/js/jquery.min'));
在所有js运行之前 重命名并删除对象
window.Myrequire = window.require;//(如果需要)
delete window.require;
delete window.exports;
delete window.module;
@chengang4505 多谢!!这个方法好用。问题已解决
Electron 的 Renderer 端因为注入了 Node 环境,存在全局函数 require
,导致 jQuery 内部环境判断有问题!
如果你不需要在网页里面使用 node 模块(包括 electron 模块),建议你把 BrowserWindow 的webPreferences.nodeIntegration 设置为 false。
在线页面更应该关掉 nodeIntegration,否则如果你的页面被黑掉了,是非常危险的。
@meowtec 多谢,一定要多注意下安全问题。