javascript – 使用webpack动态加载PapaParse

我正在使用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.

点赞