Linux下ElectronloadURL报错ERR_FAILED(-2)Notallow。。
Linux下Electron loadURL报错 ERR_FAILED(-2) Not allowed to load local resource
背景
使⽤electron-vue的时候,窗体创建后加载页⾯使⽤的是loadURL函数,并且传⼊的参数形如:
`file://${__dirname}/index.html`
PS:在electron-vue中,编译打包后的__dirname是asar所在绝对地址/dist/electron/。
编译打包后的Electron程序启动时候,发现在调⽤loadURL的时候会出现:ERR_FAILED(-2) 。
遂临时启动DevTool窗⼝查看控制台输出,发现类似如下错误:electron vue教程
Not allowed to load local resource: file://XXXXXX/app.asar/dir1/dir2/index.html
原因及⽅案
1、⽂件并不存在于你的asar包中
处理⽅式:
1. 全局安装npm install -g asar
2. 通过asar解压app.asar包,检查上述提到的file路径中是否存在你的index.html。
2、尝试禁⽤窗体参数中的webSercurity
处理⽅式:
{
webPreferences: {
webSecurity: false
}
}
3、检查webpack配置中的__dirname,防⽌webpack处理'mock'
这⼀点主要是当上述Not alloed to load local resource提到的路径明显不正确时候,可以检查。
// webpack配置⽂件中的node节点,当打包的时候需要防⽌webpack处理
node: {
__dirname: false
}
webpack配置⽂件中的node节点,当打包的时候需要防⽌webpack处理__dirname,如果你使⽤了electron-vue脚⼿架应该不需要关⼼,因为你会看到如下的内容,已经帮你处理了:
node: {
__dirname: v.NODE_ENV !== 'production',
__filename: v.NODE_ENV !== 'production'
},
4、使⽤loadFile⽽不是loadURL
使⽤loadFile接⼝来加载本地的路径,loadFile('path/to/index.html'),这个路径是以app.asar根路径为base的。例
如,loadFile('dir_path1/dir_path2/index.html'),那么你的index.html在app.asar是如下的结构:
app.asar
|-dir_path1
|-dir_path2
|-index.html
5、确定file协议斜杆正确
本⼈在编写代码的时候,由于马虎,loadURL的参数想要加载本地的页⾯,file:/XXX少写了⼀个斜杠,应该是file://,导致加载问题。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。