重要提示::由于要求,我必须使用文件协议file://
加载我的所有HTML文件(在浏览器中单击以打开HTML文件/将其拖放到浏览器)。
由于使用了来自文件协议的网络工作者,并且无法在浏览器上进行任何修改,因此我目前正在Firefox中运行代码。
我的文件结构如下:
main
|-index.html
|-pages
| |-module1
| |-page1.html
|-js
| |-index.js
|-deps
|-worker.js
index.js
已加载到page1.html
中:
<script src="../../js/index.js"></script>
index.js
试图加载Webworker文件worker.js
:
const workerURL = '../../deps/worker.js';
let worker = new Worker(workerURL);
worker.onmessage = (evnt) => {
console.log('success!');
}
worker.onerror = (evnt) => {
console.log('error: ',evnt.message);
}
worker.postMessage('');
运行上面的结果是error!
。即使我使用workerURL = deps/worker.js
运行它,也会发生相同的错误。最令人沮丧的是,在worker.onerror
的console.log下显示error: undefined
。
我已经在这里呆了很长时间,也不知道如何解决这个问题。我什至不知道如何调试出了什么问题。
答案 0 :(得分:0)
我遇到了同样的问题。我在Firefox(而不是Chrome)中打开了我的应用程序,并且在控制台中看到一个错误:“有关由于将Web Worker脚本传递给Worker构造函数而导致的MIME类型('text / html')不匹配导致资源被阻止”。您认为您可能有同样的问题吗?专门将脚本用作应用程序/ JavaScript类型,或者将URL提供给严格服务js文件的构造函数,因为浏览器不会加载内容类型不匹配的资源。以下是一些其他信息:https://www.keycdn.com/support/what-is-mime-sniffing