网络工作者在执行时抛出 404

day*_*mer 4 javascript web-worker node.js

我的项目结构看起来像

js
  /client.js
  /script1.js
  /webWoker.js
node_modules
.gitignore
index.html
Run Code Online (Sandbox Code Playgroud)

main.html有它作为以及包括

<script type="text/javascript" src="js/script1.js"></script>
<script type="text/javascript" src="js/client.js"></script>
<script type="text/javascript" src="js/webWoker.js"></script>
Run Code Online (Sandbox Code Playgroud)

我的script1.js样子

if (window.Worker) {
    console.log("uri: " + document.documentURI);
    var myWorker = new Worker("myworker.js");
    myWorker.postMessage("hello");
    console.log(myWorker);

    myWorker.onmessage = function (e) {
        result.textContent = e.data;
        console.log('Message received from worker: ' + result.textContent);
    };
}
Run Code Online (Sandbox Code Playgroud)

我的webWorker.js样子

onmessage = function (e) {
    console.log('Message received from main script');
    var result = "#27ae60";
    console.log('Posting message back to main script');
    postMessage(result);
};
Run Code Online (Sandbox Code Playgroud)

node.js用于这个项目并通过 运行它npm start,当我在浏览器中运行它时,我看到

script1.js:81 GET http://localhost:8080/webWorker.js 404 (Not Found)
execute @ script1.js:81
img.onload @ script1.js:64
Run Code Online (Sandbox Code Playgroud)

这里出了什么问题?

Kai*_*ido 5

您不必在主页中包含工作脚本(这甚至是一个坏主意),但您传递给的 URInew Worker(URI)是相对于当前 documentURI 的。

所以在你的情况下,它应该是new Worker("/js/webWorker.js");.

  • `scipt1.js:81 GET http://localhost:8080/webWorker.js 404(未找到)`。即使我更改了路径并将其从 `html` 文件中删除,我仍然明白这一点 (2认同)
  • 奇怪的是, `new Worker('http://localhost:8080/js/webWorker.js')` 正在工作,当我将其更改为 `new Worker('js/webWorker.js')` 时,甚至开始工作 (2认同)