Модуль Shimming в веб-пакете - PullRequest
1 голос
/ 07 марта 2020

Я строю проект машинописного текста с модулем tiny-worker как зависимость (не прямая зависимость). tiny-worker использует узел child_process, который не существует в браузере.

Я следовал руководству по пакетированию Webpack и добавил следующее в свою конфигурацию webpack:

plugins: [
    new webpack.ProvidePlugin({
      'tiny-worker': 'Worker'
    })
  ],

Однако, когда я попробуйте запустить webpack, он по-прежнему жалуется на child_process в tiny-worker

ERROR in ./node_modules/tiny-worker/lib/index.js
Module not found: Error: Can't resolve 'child_process' in '/Users/aakilfernandes/projects/pollenium/rainlily/node_modules/tiny-worker/lib'
 @ ./node_modules/tiny-worker/lib/index.js 8:11-35
 @ ./node_modules/pollenium-anemone/node/src/classes/MissiveGenerator.js
 @ ./node_modules/pollenium-anemone/node/main.js
 @ ./src/globals/anemoneClient.ts
 @ ./src/classes/BopManager.ts
 @ ./src/classes/Market.tsx
 @ ./src/globals/markets.ts
 @ ./src/app.tsx
 @ ./src/index.ts
 @ multi @babel/polyfill ./src/index.ts

Как я могу заставить Webpack использовать window.Worker вместо import Worker from 'tiny-worker'

1 Ответ

0 голосов
/ 07 марта 2020

Решил это, используя module-replace-webpack-plugin

https://www.npmjs.com/package/module-replace-webpack-plugin

plugins: [
    new ModuleReplaceWebpackPlugin({
      modules: [{
        test: /^tiny-worker$/,
        replace: './shims/Worker.js'
      }]
    })
  ]

и создал shims/Worker.js, который просто реэкспортирует окно. Работник

export default window.Worker

...