Javascript 链接导入装入器并导出带有覆盖模块变量的库的装入器
我正在尝试加载一个名为libvorbis.js的音频编码库,它是vorbis的emscripten编译版本 libvorbis.js需要在其作用域中使用窗口变量执行,并将类作为var公开,而不进行导出声明 通常,将导入加载程序和导出加载程序链接起来以获取这样一个文件是很容易的。 使用- 这将在libvorbis.js中以“this”的形式公开窗口对象,并将VorbisMediaRecorder取出,作为稍后运行的其他模块/代码所需的对此的返回 但是,libvorbis.js本身会覆盖'module'变量,从而导致导出加载程序无法导出 libvorbis.js在其代码中有此签入Javascript 链接导入装入器并导出带有覆盖模块变量的库的装入器,javascript,webpack,emscripten,vorbis,webpack-loader,Javascript,Webpack,Emscripten,Vorbis,Webpack Loader,我正在尝试加载一个名为libvorbis.js的音频编码库,它是vorbis的emscripten编译版本 libvorbis.js需要在其作用域中使用窗口变量执行,并将类作为var公开,而不进行导出声明 通常,将导入加载程序和导出加载程序链接起来以获取这样一个文件是很容易的。 使用- 这将在libvorbis.js中以“this”的形式公开窗口对象,并将VorbisMediaRecorder取出,作为稍后运行的其他模块/代码所需的对此的返回 但是,libvorbis.js本身会覆盖'modul
// 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'
# libvorbis must be resolved in window scope, use the file-loader
require 'file-loader?name=[name].[ext]!libvorbis.js/build/libvorbis.js'