2017-03-14 72 views
0

我试图在ES6项目中使用编写在ES5(rtree)中的库文件,但没有运气。在ES6中导入ES5库

在我ES6代码我做的:

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

这是不行的,但是如果我去掉进口,而是增加一个标签,以我的HTML它的作品完美的RTREE。

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

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

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

+0

http://stackoverflow.com/questions/31708545/es6-import-vs-script-src-in-html – user93

+0

你可以传输你的ES 6代码。您可以在大约12秒内将库转换为ES 6。您可以简单地访问该库几乎肯定附加的全局变量。不知道这里的问题是什么。只是不要使用'import'。 –

+0

@JaredSmith,但我怎么能将它转换为ES6?我尝试了lebab,但它不输出任何东西。 –

回答

2

ES5 lib不会以ES6兼容的方式导出任何东西。这就是为什么PolygonLookup未定义。您可以导入库中没有任何约束力:

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

这样PolygonLookup将是全球PolygonLookup,就像如果你包括IF它已作为一个全局变量具有script标签的lib,。并非所有图书馆都明确这样做。否则,你可以尝试script-loader(只的WebPack):

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

如果您选择的捆绑/加载器支持其它模块格式,以及库使用其中的一种,那么你也可以使用一个普通ES6进口。

+0

不能使它与第1或第2个替代品一起工作,但它可能是我做错了什么(无论是在webpack配置还是在某处)。不管怎样,最终可能会使用脚本标记。 –