Веб-работники React загружаются из странной функции - PullRequest
0 голосов
/ 19 октября 2018

Я провел, пожалуй, самый худший день в моей жизни, пытаясь заставить веб-работников работать в приложении для создания реакции.

Если я просто импортирую

import VoiceWorker from './voice.worker.js'

И

  voiceWorker = new Worker(VoiceWorker)
  voiceWorker.postMessage({command:'start'})

Он отлично работает локально, но не на сервере, где не удается найти рабочий файл.

Так что я следовал различным инструкциям, я не могу использовать метод встроенного блоба, потому что у веб-работника есть зависимости.

Я обновил React-Scripts до 2.0.5, потому что где-то я читал, что он поддерживаетдля веб-работников, но это не так.

Я использовал библиотеку worker-loader, использовал react-app-rewired

С переопределением конфигурации ниже

const path = require('path')
const WorkerPlugin = require('worker-plugin')

module.exports = function override(config, env) {
  config.module.rules.push({
    test: /\.worker\.js$/,
    use: { loader: 'worker-loader' },
  })

  config.plugins.push(new WorkerPlugin())
  config.output.globalObject= `this`

  return config
}

И import VoiceWorker from 'worker-loader!./voice.worker.js'

Теперь он пытается загрузить работника с указанного ниже URL-адреса и завершается неудачно: https://localhost:3000/course/function()%20%7B%20%20return%20new%20Worker(webpack_require.p%20+%20%220306a1085789e37891cf.worker.js%22);%7D

Я попробовал подключаемый модуль работника, как указано выше, и он ничего не делает.

Я загружал его раньше, и 'окно' было неопределенным, но эта строка config.output.globalObject = this исправила это.

Пожалуйста, кто-нибудь может подсказать, как заставить рабочих загружаться вReact!

1 Ответ

0 голосов
/ 20 октября 2018

Получил работу с https://github.com/developit/workerize-loader, который кажется более зрелым.

response-app-rewired с config.output.globalObject= self помогает с проблемой «окно не определено».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...