diff --git a/packages/wmr/src/plugins/worker-plugin.js b/packages/wmr/src/plugins/worker-plugin.js index 5222c1e9..bdd2d46f 100644 --- a/packages/wmr/src/plugins/worker-plugin.js +++ b/packages/wmr/src/plugins/worker-plugin.js @@ -118,8 +118,9 @@ export function workerPlugin(options) { } const start = match.index + match[0].indexOf(spec); - // Account for quoting characters - s.overwrite(start - 1, start + spec.length + 1, `import.meta.ROLLUP_FILE_URL_${ref}`); + // Account for quoting characters and force URL to be + // relative. + s.overwrite(start - 1, start + spec.length + 1, `'.' + import.meta.ROLLUP_FILE_URL_${ref}`); } return { diff --git a/packages/wmr/test/fixtures/worker-relative/foo/foo.worker.js b/packages/wmr/test/fixtures/worker-relative/foo/foo.worker.js new file mode 100644 index 00000000..bd05ed84 --- /dev/null +++ b/packages/wmr/test/fixtures/worker-relative/foo/foo.worker.js @@ -0,0 +1,3 @@ +addEventListener('message', () => { + postMessage('it works'); +}); diff --git a/packages/wmr/test/fixtures/worker-relative/foo/index.js b/packages/wmr/test/fixtures/worker-relative/foo/index.js new file mode 100644 index 00000000..5bb0e2fd --- /dev/null +++ b/packages/wmr/test/fixtures/worker-relative/foo/index.js @@ -0,0 +1,7 @@ +const worker = new Worker(new URL('./foo.worker.js', import.meta.url)); + +worker.addEventListener('message', e => { + document.querySelector('h1').textContent = e.data; +}); + +worker.postMessage('hello'); diff --git a/packages/wmr/test/fixtures/worker-relative/index.html b/packages/wmr/test/fixtures/worker-relative/index.html new file mode 100644 index 00000000..9cfb45a0 --- /dev/null +++ b/packages/wmr/test/fixtures/worker-relative/index.html @@ -0,0 +1,2 @@ +

it doesn't work

+ diff --git a/packages/wmr/test/fixtures/worker-relative/index.js b/packages/wmr/test/fixtures/worker-relative/index.js new file mode 100644 index 00000000..76a6714b --- /dev/null +++ b/packages/wmr/test/fixtures/worker-relative/index.js @@ -0,0 +1 @@ +import './foo/index.js';