hiccLoghicc log by wccHipo日志

解决CloudKit在Electron中无法登录的问题

toc

Intro

cloudkit-auth-window

最近CloudKit Web端授权页面更新后中使用了CMD模块化的东西,因此会检查require是否存在,本意是存在的话就会按照CMD的方式加载js模块,但是Electron中默认通过require来加载electron模块或者npm模块,这样问题就来了,Electron中的Cloudkit授权页面就会报错!

解决方案也简单,如果你的页面中不需要使用electron提供的node能力,自然解决方案就是启动主窗口时候禁用node能力即可,这样通过window.open()之后的窗口也会禁用。

//在mian.js中
const BrowserWindow = electron.BrowserWindow
mainWindow = new BrowserWindow({
    width: 1200, 
    height: 800,
    webPreferences: {
      nodeIntegration: true//这里配置禁用node使用
    }
  })

当然一般情况下还是需要使用electron所提供的node能力,这样就不能在main.js中禁用全部窗口的node能力,因此就需要单独设置。

至于CloudKit js授权的案例中,单独关闭CloudKit Web端授权页面中node能力即可

//修改https://cdn.apple-cloudkit.com/ck/2/cloudkit.js中window.open方法第三个参数增加nodeIntegration=0

window.open(a, "", "nodeIntegration=0,width=" + b + ", height=" + c)