开发electron时候Chromium 报 Not allowed to load local resource → 空白页。
报错含义
主进程(main.js)里 win.loadFile()
/win.loadURL()
指向了
file:///…/app.asar/build/index.html
,
但打包后真正的文件位于 app.asar 内部,路径拼错,于是 Chromium 报 Not allowed to load local resource → 空白页。
根因
electron-builder 把 build
目录放进了 app.asar
,
而你用 loadFile
时把路径写成 file://
+ 绝对路径,
多了一层 /app.asar/
文件夹,导致找不到。
正确写法(生产环境)
-
用
loadFile
:const path = require('path'); win.loadFile(path.join(__dirname, '../build/index.html'));
注意:
- 不要加
file://
协议头; - 相对路径以打包后的目录结构为准。
- 不要加
-
或用
loadURL
配合asar
协议(不推荐,易出错):win.loadURL(`file://${__dirname}/../build/index.html`);
-
确保 electron-builder 配置把
build
目录打进去
package.json → build → files 至少包含:"files": ["build/**/*","electron/**/*","node_modules/**/*" ]
-
删除旧产物再重新打包
rmdir /s /q dist npm run build-electron-win64
-
运行安装包
dist\Harbour-1.0.0-win-x64.exe
,
打开 DevTools,若不再出现Not allowed to load local resource
,页面即可正常渲染。