我们正在尝试创建一个ES6加载器,以使用对模块的符号引用,而不是导入句子中形式良好的URI或路径。例如,像这样的导入:
import { foo } from 'com.bussines.platform.utils';
应将符号引用com.bussines.platform.utils
解析为真实的uri并继续执行常规加载过程以获取foo
。
为了实现这一目标,我们正在使用@guybedford开发的es-module-loader
polyfill 。因为,我们在浏览器上下文中,我们创建了一个委托给BrowserESModuleLoader
的加载器:
class CustomBrowserLoader extends RegisterLoader {
constructor(Loader) {
super();
this.loader = new BrowserESModuleLoader();
}
[RegisterLoader.resolve] (key) {
let uri = Resolve (key)
return this.loader[RegisterLoader.resolve] (uri); // (1)
}
[RegisterLoader.instantiate] (uri) {
return this.loader[RegisterLoader.instantiate] (uri); // (2)
}
}
问题是,令人惊讶的是,第(1)和第(2)行的调用找不到所需的方法resolve
和instantiate
。我们已经尝试了基于继承的其他方法,但得到了类似的结果。
¿有人能提供一些有关如何解决问题的见解吗?提前谢谢。
答案 0 :(得分:0)
加载器是单独的构建,所以我想你会想要BrowserESModuleLoader.resolve和BrowserESModuleLoader.instantiate。
最好直接分叉Browser ES Module Loader代码本身,并使其适应直接处理这些类型的说明符。