Firefox运行JavaScript无法调用外部文件,Chrome无法运行Web Workers求助
解决file://协议加载Web Worker的安全错误
出现这个错误是因为Chrome等现代浏览器出于安全策略,禁止通过file://协议加载Web Worker——哪怕是本地同目录的文件也不行,浏览器会判定为跨源资源请求并拦截。
以下是两种可行的解决方法:
方法一:使用本地HTTP服务器(推荐)
这是最安全且通用的方案,把本地文件当作HTTP服务来访问:
- Python内置服务器:
- 如果你装了Python 3,打开命令行,进入项目根目录(D:/ChessComparator),运行:
python -m http.server 8000 - 若装的是Python 2,运行:
python -m SimpleHTTPServer 8000 - 然后在Chrome里访问
http://localhost:8000/index.html,就能正常加载Web Worker了。
- 如果你装了Python 3,打开命令行,进入项目根目录(D:/ChessComparator),运行:
- Node.js的http-server:
- 先全局安装:
npm install -g http-server - 进入项目根目录运行:
http-server - 按照命令行提示的地址(比如
http://localhost:8080)访问即可。
- 先全局安装:
方法二:修改Chrome启动参数(临时测试用)
这个方法会降低浏览器安全性,仅适合临时调试:
- 关闭所有Chrome窗口;
- 找到Chrome的桌面快捷方式,右键点击「属性」;
- 在「目标」输入框的末尾,添加
--allow-file-access-from-files --allow-file-access(注意前面要加空格); - 点击「确定」后启动Chrome,再打开本地的
index.html即可绕过限制。
额外验证
确保./js/stockfish.js路径正确,项目根目录下确实存在js文件夹,且里面有stockfish.js文件。
内容的提问来源于stack exchange,提问作者Ituriel
相关产品推荐
相关产品推荐

