标签:JQuery node render defined js Electron preload
背景:web项目迁移到Electron,原web项目中用了JQuery,迁移后运行,抛出Uncaught ReferenceError: $ is not defined Electron版本是15.3.0,参考了https://stackoverflow.com/questions/32621988/electron-jquery-is-not-defined发现是这个原因:
webPreferences: { // preload: path.join(__dirname, 'preload.js'), nodeIntegration: true, contextIsolation: false, }
把nodeIntegration和contextIsolation恢复默认值即可解决。
原因是渲染进程集成了Node.js运行环境,必须以node.js的方式去运行$函数,也就是需要let $ = require等方式去使用外部函数。
新手的思考:
这样的话,未来可以在preload.js中放node.js环境相关的东西,render.js中放纯浏览器JS环境的东西。
为了便于项目迁移,始终将渲染进程和node.js环境保持隔离,render.js中完全不放node.js相关的东西,不必把node.js的API刻意暴露给render.js使用(可以基于项目需要在preload.js中实现),这样或许就可以实现WEB应用程序和桌面应用程序的方便转换。
标签:JQuery,node,render,defined,js,Electron,preload 来源: https://www.cnblogs.com/xkxf/p/15546106.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。