我正在从data-uri加载一个窗口:
pref.loadURL('data:text/html;charset=utf-8,' + encodeURI(str), { baseURLForDataURL: 'file://' + app.getAppPath() } );
好消息是,开发工具控制台现在显示应加载但未加载的css / js文件的错误,但我无法理解它的期望。在任何地方都没有示例,甚至在启发该选项的github问题中也没有。
它是否期望绝对路径(如上述示例所示)?
答案 0 :(得分:0)
通常会期待
'file://' + app.getAppPath().replace("\\", "/") + "/"
但目前,似乎存在一个问题,至少在使用协议“file://”时,我们会收到错误消息。 (https://github.com/electron/electron/issues/20700)
解决此问题的一种方法是生成自定义文件协议。
const { app, BrowserWindow, screen, protocol } = require('electron');
const path = require('path');
app.on('ready', () => {
const customProtocol = 'file2';
protocol.registerFileProtocol(customProtocol, (request, callback) => {
const url = request.url.substr(customProtocol.length + 2);
const file = { path: path.normalize(`${__dirname}/${url}`) }
callback(file)
});
let win = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
contextIsolation: true
}
});
win.loadURL(`data:text/html;charset=UTF-8,${encodeURIComponent(indexHTML)}`, {
baseURLForDataURL: `${customProtocol}://${app.getAppPath().replace("\\", "/")}/`
});
});