最近在使用electron.js进行一个客户端APP的开发,虽然electron.js的开发可以实现一端开发、跨平台实现。但实际上我的主要考虑发和运行环境是一样的——都是在Windows10系统中进行。此时遇到了2个警告问题,这2个警告都没有找到原因、并且都没有解决,只是先临时记录一下:
1、Request Autofill.enable failed
APP启动之后,在主进程的控制台输出上会有如下的错误提示:”Request Autofill.enable failed. {“code”:-32601,”message”:”‘Autofill.enable’ wasn’t found”}”, source: devtools://devtools/bundled/core/protocol_client/protocol_client.js (1)

这个问题在网络上没有找到比较准确的答案,网上提到的通常是:这个警告信息并不构成实际问题,可以忽略。但是有人也提出“做为编码洁癖者,受不得这样的提示出现”。
经过尝试发现,这是在开发时打开了浏览器的debug窗口引起的,如果在开发的时候不打开调试窗口,则不会出现这个错误。
2、Electron Security Warning (Insecure Content-Security-Policy) This renderer process has either no Content Security Policy set or a policy with “unsafe-eval” enabled. This exposes users of this app to unnecessary security risks.
如果在浏览器中访问了外部链接,例如访问了非本地的、互联网上的页面,会在前端控制台中出现上面的警告提示,似乎是有CSP风险。

我的应用是:页面都是访问本地资源,同时与远程服务器通过API进行数据交互,但其中有一个“用户登录鉴权”环节,是需要跳转到企业微信的扫码界面,然后客户(使用人员)通过企业微信扫码完成鉴权访问。也就是这个跳转到企业微信登录页面,会访问到互联网网页资源,从而出现上述问题。
解决方案大概应该是在相关的前端页面(例如我的是login.html)中,增加对特定域名的CSP授信声明。但是我不会做,所以用了一个简单粗暴的方法:
在主app进程main.js程序中,增加下面这句话将CSP警告全部忽略:
process.env[‘ELECTRON_DISABLE_SECURITY_WARNINGS’] = ‘true’
做法粗暴且应该是不正确的,但暂时还没有找到更好的办法。