解决 net::ERR_UNKNOWN_URL_SCHEME 本地资源加载问题

1,255 阅读1分钟

electron v4 之后, 出于安全考虑, electron将不允许加载本地资源到render中, 要解决这个问题只需设置webSecurity:false, 并改写protocal即可.

electron版本为11.5.0

// main.js

function createWindow() {
  const mainWindow = new BrowserWindow({
    // ...
    webPreferences: {
      // ...
      webSecurity: false
    },
  });
  // ...
}

app.on("ready", () => {
  protocol.interceptFileProtocol(
    "file",
    (req, callback) => {
      const url = req.url.substr(8);
      callback(decodeURI(url));
    },
    (error) => {
      if (error) {
        console.error("Failed to register protocol");
      }
    }
  );

  createWindow();
  
  // ...
});