将require注入js供应商模块

时间:2017-05-10 12:12:10

标签: javascript webpack

关于框架(虽然我认为问题本身并不严重依赖于此):Angular 2 with Webpack

图书馆Leaflet.heat依赖于simpleheat。我控制了丢失的类型定义。 我正在vendor.ts

中导入库
[...]
import 'simpleheat';
import 'leaflet.heat/src/HeatLayer';
[...]

HeatLayer class内部,函数simpleheat:

[simpleheat.js]
if (typeof module !== 'undefined') module.exports = simpleheat;

function simpleheat(canvas) {
...

被调用。但是,HeatLayer模块文件不需要在其文件中进行简单的加热 因此,创建L.HeatLayer的实例有效,但在其函数中执行相应代码失败

ReferenceError: simpleheat is not defined

现在,将simpleheat = require('simpleheat');(用于测试目的)添加到HeatLayer文件(供应商)中,它可以正常工作。
可以理解,我不想修改供应商文件。

问题:
我可以使用哪些选项来使函数simpleheat可以从HeatLayer模块中访问?

1 个答案:

答案 0 :(得分:0)

我刚发现的一个解决方案:

vendor.ts更改为以下内容:

(<any>window).simpleheat = require('simpleheat');
import 'leaflet.heat/src/HeatLayer';

还有其他人/更好吗?