首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用覆盖模块变量的库链接imports loader和exports-loader

使用覆盖模块变量的库链接imports loader和exports-loader
EN

Stack Overflow用户
提问于 2017-10-26 08:49:13
回答 1查看 652关注 0票数 2

我正在尝试加载一个名为libvorbis.js的音频编码库,它是vorbis的emscripten编译版本。

libvorbis.js需要在其作用域中使用窗口变量执行,并将类公开为var,而不使用exports声明。

通常,将imports loader和exports-loader链接起来获取这样的文件是很容易的。使用-

代码语言:javascript
复制
require 'imports-loader?this=>window!exports-loader?VorbisMediaRecorder!libvorbis.js/build/libvorbis.js'

它将在libvorbis.js内将窗口对象公开为' this‘,并将VorbisMediaRecorder作为返回到此对象,这是稍后运行的其他模块/代码所需的。

但是,libvorbis.js本身会覆盖'module‘变量,这会使导出加载器无法导出

libvorbis.js在其代码中进行了此检查

代码语言:javascript
复制
// node.js Environment
var module;
if (module && module.exports) {
    makeVorbisEncoderModule({}, module);
}

// Web Worker Environment
if (!module && this.document === undefined) {
    VorbisWorkerScript.main(this);
}

这会覆盖导致webpack抛出此错误的模块

代码语言:javascript
复制
commons.js:142 TypeError: Cannot set property 'exports' of undefined

当它试图运行时

代码语言:javascript
复制
/*** EXPORTS FROM exports-loader ***/
module.exports = VorbisMediaRecorder;

对如何解决这个问题有什么想法吗?我真的不想派生libvorbis并修改它的源代码。

编写libvorbis.js库是为了将其作为脚本包含在页面上。

EN

回答 1

Stack Overflow用户

发布于 2017-10-26 14:31:00

因此,我解决了使用文件加载器时遇到的特殊问题。它将加载脚本,就像一个带有src等的文件。因此,它可以毫无问题地运行。

代码语言:javascript
复制
# libvorbis must be resolved in window scope, use the file-loader
require 'file-loader?name=[name].[ext]!libvorbis.js/build/libvorbis.js'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46944132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档