Я пытаюсь загрузить библиотеку аудиокодирования libvorbis.js, которая является компиляцией emscripten vorbis.
libvorbis.js требует выполнения с помощью переменной окна в ее области и оставляет классы, представленные как var без объявления экспорта.
Как правило, было бы легко связать импорт-загрузчик и экспорт-загрузчик для получения такого файла. Using-
require 'imports-loader?this=>window!exports-loader?VorbisMediaRecorder!libvorbis.js/build/libvorbis.js'
который откроет объект window как "this" внутри libvorbis.js и выведет VorbisMediaRecorder как возврат к этому, который необходим моим другим модулям/кодам, которые будут запущены позже.
HOWEVER, сама libvorbis.js перезаписывает переменную 'module', которая заставляет экспорт-загрузчик экспортировать
У libvorbis.js есть эта проверка в коде
// node.js Environment
var module;
if (module && module.exports) {
makeVorbisEncoderModule({}, module);
}
// Web Worker Environment
if (!module && this.document === undefined) {
VorbisWorkerScript.main(this);
}
это перезаписывает модуль, который заставляет webpack выкидывать эту ошибку
commons.js:142 TypeError: Cannot set property 'exports' of undefined
как он пытается запустить
/*** EXPORTS FROM exports-loader ***/
module.exports = VorbisMediaRecorder;
Любые идеи о том, как решить эту проблему? Я действительно не хочу разветвлять libvorbis и изменять его источник.
Библиотека libvorbis.js была записана для включения в качестве скрипта на странице.
Поэтому я решил свою проблему с помощью файлового загрузчика. Он загрузит скрипт точно так же, как файл с помощью src и т.д., Поэтому его можно запустить без проблем.
# libvorbis must be resolved in window scope, use the file-loader
require 'file-loader?name=[name].[ext]!libvorbis.js/build/libvorbis.js'