我正在使用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:在PapaParse库中没有从this line定义Papa:
if (!config.chunkSize)
config.chunkSize = Papa.LocalChunkSize;
有没有办法使这项工作?
[编辑]
我对requirejs / webpack完全不熟悉,所以我不确定这是否是解决此问题的正确方法,但我设法通过使用以下shim configuration来实现这一点(不幸的是仍在污染窗口命名空间):
require("imports?this=>window!exports?global.Papa!./papaparse.js").parse(event.target.files[0], {
complete: function(results) {
...
}
}
据我了解,第一个指令(imports?this => window)使用导入加载程序将global
parameter设置为窗口对象(而不是空对象).这使得PapaParse中的调用变为global.document和global.postMessage()工作(并且似乎也使得对Papa的无限制调用工作 – 即没有前缀为global.Papa的调用).第二个指令(exports?global.Papa)表示将Papa对象从require调用中导出为返回的对象.
如果有经验的webpack可以告知这是否是正确的解决方法,我会感兴趣吗?
最佳答案 截至
this commit,PapaParse现在应该使用webpack.另见
PR172.