diff --git a/code/websites/pokedex.online/src/views/GamemasterExplorer.vue b/code/websites/pokedex.online/src/views/GamemasterExplorer.vue index 0ddf0e6..54d0fbf 100644 --- a/code/websites/pokedex.online/src/views/GamemasterExplorer.vue +++ b/code/websites/pokedex.online/src/views/GamemasterExplorer.vue @@ -402,24 +402,25 @@ let searchWorkerRequestId = 0; const initSearchWorker = () => { if (!searchWorker) { try { - const workerUrl = new URL('../workers/search.worker.js', import.meta.url); - console.log('🔧 Creating worker with URL:', workerUrl.href); - searchWorker = new Worker(workerUrl, { type: 'module' }); - console.log('✅ Worker created successfully'); - - searchWorker.onmessage = handleSearchWorkerMessage; - searchWorker.onerror = error => { - console.error( - '❌ Worker error:', - error.message, - error.filename, - error.lineno - ); + // Use Vite's ?worker syntax for proper bundling + import('../workers/search.worker.js?worker').then(module => { + searchWorker = new module.default(); + console.log('✅ Worker created successfully'); + + searchWorker.onmessage = handleSearchWorkerMessage; + searchWorker.onerror = error => { + console.error('❌ Worker error:', error.message); + operationProgress.value.active = false; + operationProgress.value.message = 'Search error: ' + error.message; + }; + + console.log('✅ Worker event handlers attached'); + }).catch(error => { + console.error('❌ Failed to import worker:', error); operationProgress.value.active = false; - operationProgress.value.message = 'Search error: ' + error.message; - }; - - console.log('✅ Worker event handlers attached'); + operationProgress.value.message = 'Failed to initialize search'; + searchWorker = null; + }); } catch (error) { console.error('❌ Failed to create worker:', error); operationProgress.value.active = false;