我使用PapaParse从文件输入加载csv文件。
目前,我有一个使用脚本标记加载PapaParse的工作版本:
<script type="text/javascript" src="papaparse.js" ></script>并处理更改事件:
Papa.parse(event.target.files[0], {
complete: function(results) {
...
}
}现在我想使用webpack来捆绑我的js,并且我希望在需要的时候动态地加载PapaParse,而不是每次都加载到全局名称空间中。就像这样:
require("./papaparse.js").Papa.parse(event.target.files[0], {
complete: function(results) {
...
}
}不幸的是,这使我在Uncaught ReferenceError: Papa is not defined库中出现了来自这条线的错误PapaParse:
if (!config.chunkSize)
config.chunkSize = Papa.LocalChunkSize;有什么办法让这件事成功吗?
编辑
我对requirejs / webpack是完全陌生的,所以我不确定这是否是解决这个问题的正确方法,但是我通过使用下面的shim配置成功地完成了这个工作(不幸的是我仍然污染了窗口名称空间)
require("imports?this=>window!exports?global.Papa!./papaparse.js").parse(event.target.files[0], {
complete: function(results) {
...
}
}据我所知,第一个指令(imports?this=>window)使用导入加载器将参数设置为窗口对象(相对于空对象)。这使得PapaParse中对global.document和global.postMessage()的调用工作(并且似乎也对Papa进行了不限定的调用--即没有以global.Papa为前缀的调用)。第二个指令(exports?global.Papa)意味着Papa对象作为require返回的对象导出。
我会感兴趣的,如果有人有经验的webpack可以建议,这是否是正确的方式来处理这个问题?
https://stackoverflow.com/questions/28561396
复制相似问题