Linux下Electron loadURL报错 ERR_FAILED(-2) Not allowed to load local resource

背景

使用electron-vue的时候,窗体创建后加载页面使用的是loadURL函数,并且传入的参数形如:

`file://${__dirname}/index.html`

PS:在electron-vue中,编译打包后的__dirnameasar所在绝对地址/dist/electron/

编译打包后的Electron程序启动时候,发现在调用loadURL的时候会出现:ERR_FAILED(-2) 。

遂临时启动DevTool窗口查看控制台输出,发现类似如下错误:

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: process.env.NODE_ENV !== 'production',
__filename: process.env.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://,导致加载问题。

Linux下Electron loadURL报错 ERR_FAILED(-2) Not allowed to load local resource的更多相关文章

  1. Linux下运行java报错:Error: Could not find or load main class SocketIOPropertites

    [root@node01 testfileio]# javac SocketIOPropertites.java && java Soc ketIOPropertitesError: ...

  2. Linux下Oracle11G RAC报错:在安装oracle软件时报file not found一例

    Linux下Oracle11G RAC报错:在安装oracle软件时报file notfound一例 1.现象 之前安装一切都比較顺利,安装oracle软件时,进度到30%时报错:file not f ...

  3. linux 下 tomcat 运行报错 Broken pipe

    linux 下 tomcat 运行报错 Broken pipe 感谢:http://hi.baidu.com/liupenglover/blog/item/4048c23ff19f1cd67d1e71 ...

  4. linux下安装php报错configure: error: Cannot find MySQL header files under /usr/include/mysql.

    linux下安装php报错configure: error: Cannot find MySQL header files under /usr/include/mysql. 2013-03-04 1 ...

  5. linux下mysql安装报错及修改密码登录等等

    1:下载 [root@localhost soft]# wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.19-linux-glibc ...

  6. Linux下安装redis报错信息

    redis在Linux安装报错 标签: redislinuxcentos 2017-02-24 13:46 384人阅读 评论(0) 收藏 举报  分类: Linux安装工具(2)  版权声明:本文为 ...

  7. Jenkins - Linux下启动Jenkins报错hudson.WebAppMain#contextDestroyed: Shutting down a Jenkins instance that was still starting up

    报错截图 在Linux下直接运行jenkins.war报错,导致启动失败 报错原因 运行端口已被其他进程占用 解决方法 换个启动端口就可以啦!

  8. linux下svn客户端报错Cannot negotiate authentication mechanism的解决方法

    svn客户端报错Cannot negotiate authentication mechanism的解决方法: 问题出现的原因之一: 因为SVN服务器配置了saslauthd服务用来实现与ldap的对 ...

  9. Python在Linux下编译安装报错:Makefile:1141:install

    正常情况下执行:./configuremake && make install可以直接安装python,但是在在更新了乌版图后居然报错了!!!检查了一圈,发现乌版图安装了python3 ...

随机推荐

  1. Spring之JDBC Template

    时间:2017-2-5 18:16 --Spring对不同持久化技术的支持Spring为各种支持的持久化技术都提供了简单操作的模板和回调.ORM持久化技术:    JDBC:        org.s ...

  2. react的每个方法为什么一定要bind this

    一开始学习react的时候就了解了react的每个方法都要bind(this)或者使用箭头函数绑定this的指向,到底是为什么要这么写呢,当时要学习的东西太多了就没在意,今天特别好奇(不搞懂不吃饭的态 ...

  3. Go版本依赖--版本选择机制

    目录 1. 版本选择机制 2.依赖包版本约定 2.1 Go module 之前版本兼容性 2.2 Go module 之后版本兼容性 3. 版本选择机制 3.1 最新版本选择 3.2 最小版本选择 1 ...

  4. Go测试--main测试

    目录 简介 示例 简介 子测试的一个方便之处在于可以让多个测试共享Setup和Tear-down.但这种程度的共享有时并不满足需求,有时希望在整个测试程序做一些全局的setup和Tear-down,这 ...

  5. linux centos7 df命令

    2021-08-04 1. df 命令简介 linux 中 df 命令的功能是用来检查 linux 服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信 ...

  6. Linux与Windows文件同步

    Linux与Windows文件同步 本次采用的同步方式是rsync,Rsync是一款免费且强大的同步软件,可以镜像保存整个目录树和文件系统,同时保持原来文件的权限.时间.软硬链接.第一次同步时会复制全 ...

  7. springMVC学习总结(二) --springMVC表单处理、标签库、静态文件处理

    根据springMVC学习总结(一) --springMVC搭建 搭建项目 一.表单处理 1.创建两个java类 Student.java, StudentController.java. 2.在js ...

  8. git01_常用命令

    git与github介绍 Git是什么 Git是一个开源的[分布式][版本控制系统],用于敏捷高效地处理任何或小或大的项目 版本控制器 CVS/SVN/Git SVN 客户端/服务器 GIT 客户端/ ...

  9. Spring Cloud Zuul 学习+实践

    首先有必要了解一下什么是Zuul,它和Spring Cloud有什么关系. Zuul在Spring Cloud中承担着网关的职责,可以理解为客户端和服务端交互中的唯一通道.所有的客户端请求都会首先发送 ...

  10. GridControl常用操作

    显示分组面板 gridView1.OptionsView.ShowGroupPanel = true; 是否开启多选 gridView1.OptionsSelection.MultiSelect = ...