在ES6中导入ES5库

时间:2017-03-14 11:31:13

标签: javascript webpack ecmascript-6 babeljs

我正在尝试在ES6项目中使用ES5(rtree)编写的库,但没有运气。

在我的ES6代码上,我这样做:

 import PolygonLookup from '../../lib/rtree';
 ...
 this.rtree = new PolygonLookup(geojson);//does not work

这不起作用,但是如果我删除导入,而是将标记上的rtree添加到我的html中,它可以完美地工作。

 <script type="text/javascript" src="..\..\lib\rtree.js"></script>

 this.rtree = new PolygonLookup(geojson); //works

我试图通过lebab将上述库转换为ES6,但它也不起作用。

1 个答案:

答案 0 :(得分:1)

ES5 lib不以ES6兼容方式导出任何内容。这就是PolygonLookup未定义的原因。您可以导入该库而不进行任何绑定:

import '../../lib/rtree';

这样PolygonLookup将成为全局PolygonLookup,就像您将lib包含script标记, IF 一样,它已被添加为全局变量。并非所有库都明确地这样做。否则,您可以尝试script-loader(仅限Webpack):

import 'script-loader!../../lib/rtree';
or even
import PolygonLookup from 'script-loader!../../lib/rtree';

如果您选择的bundler / loader支持其他模块格式,并且库使用其中一种格式,那么您也可以使用常规ES6导入。