Кажется, я не могу заставить мое приложение cordova работать даже в простом веб-приложении, даже если тот же веб-работник работает в браузере Chrome на том же устройстве.
(устройство Android, Google Pixel 3, работает под управлением Android 9, последний уровень исправлений. Приложение было встроено в сборку PhoneGap с cli-8.0.0
)
Настройка в основном потоке:
const worker = new Worker('/fake.worker.js');
worker.postMessage(1337);
worker.addEventListener('message', event => console.log("[myWorker] received event from myWorker:", event));
И файл /fake.worker.js
- это просто, без переноса:
/* eslint-disable no-restricted-globals */
console.log("fake.worker booted");
self.addEventListener("message", startCounter);
function startCounter(event) {
console.log(event.data, self)
let initial = event.data;
console.log("fake.worker counter started:", initial);
setInterval(() => this.postMessage(initial++), 1000);
}
В итоге, консоль никогда не показывает ничего от рабочего, ни из основного потока, ни из рабочего потока console.log
заявления.
При подключении к устройству и удаленной отладке я вижу, что ('Worker' in window) === true
и вкладка Сеть на удаленной консоли, что файл fake.worker.js
действительно загружен.(Обслуживание файла через ngrok
с моего ноутбука для разработки - после подключения к удаленной консоли я изменил расположение веб-представления с помощью window.location.href = 'https://....ngrok...'
.)
Примечание : я такжея попытался включить Web Worker с помощью встроенного большого двоичного объекта (worker-loader
для веб-пакета автоматизировал это для меня, но концепция показана на https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers#Embedded_workers) - и даже когда он «встроен», рабочий никогда не загружался.