我正在尝试加载一个名为libvorbis.js的音频编码库,它是vorbis的emscripten编译版本。
libvorbis.js需要在其作用域中使用窗口变量执行,并将类公开为var,而不使用exports声明。
通常,将imports loader和exports-loader链接起来获取这样的文件是很容易的。使用-
require 'imports-loader?this=>window!exports-loader?VorbisMediaRecorder!libvorbis.js/build/libvorbis.js'它将在libvorbis.js内将窗口对象公开为' this‘,并将VorbisMediaRecorder作为返回到此对象,这是稍后运行的其他模块/代码所需的。
但是,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库是为了将其作为脚本包含在页面上。
发布于 2017-10-26 14:31:00
因此,我解决了使用文件加载器时遇到的特殊问题。它将加载脚本,就像一个带有src等的文件。因此,它可以毫无问题地运行。
# libvorbis must be resolved in window scope, use the file-loader
require 'file-loader?name=[name].[ext]!libvorbis.js/build/libvorbis.js'https://stackoverflow.com/questions/46944132
复制相似问题