NW.js访问硬盘文件时报net::ERR_UNKNOWN_URL_SCHEME错误如何解决
错误根因
你遇到的net::ERR_UNKNOWN_URL_SCHEME错误是NW.js内置Chromium内核的安全策略拦截导致的:Chromium默认禁止页面上下文直接通过file://协议加载本地媒体资源。你之前可以正常使用是旧版NW.js默认权限宽松,后续可能触发了NW.js自动更新、系统文件权限变动,导致原有默认权限失效,和你的业务代码没有关联。
修复方案
方案1:修改NW.js运行参数(快速生效)
在项目根目录的package.json中添加/修改chromium-args配置:
{ "name": "你的音乐播放器", "main": "index.html", "chromium-args": "--allow-file-access-from-files --allow-file-access --disable-web-security --user-data-dir", // 其余原有配置无需改动 }
保存配置后重启应用即可,该配置放开了Chromium对本地file://协议资源的访问限制。
方案2:转Blob URL加载(长期稳定,无权限依赖)
不要直接把本地文件路径传给音频组件的src属性,通过NW.js自带的Node.js fs模块读取文件后转成Blob URL再传入:
// 本地路径转音频可用URL的示例代码 const fs = nw.require('fs'); function getAudioSrc(localPath) { const fileBuffer = fs.readFileSync(localPath); const audioBlob = new Blob([fileBuffer], { type: 'audio/*' }); return URL.createObjectURL(audioBlob); } // 调用方法拿到URL后再传给AudioPlayer组件 const src = getAudioSrc(currentTracks[index]?.trackPath);
这种方式绕开了file://协议的访问限制,后续不管NW.js权限策略怎么调整都不会受影响。
内容的提问来源于stack exchange,提问作者Ben Jones
相关产品推荐
相关产品推荐

