4

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

不幸的是,这给了我PapaParse 库中Uncaught ReferenceError: Papa is not defined这一行的错误:

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) 使用导入加载器将global参数设置为窗口对象(而不是空对象)。这使得 PapaParse 中的调用可以正常工作(global.document并且global.postMessage()似乎也可以使不合格的调用Papa正常工作 - 即那些没有前缀为 的调用global.Papa)。第二个指令 ( exports?global.Papa) 表示将 Papa 对象导出为 require 调用的返回对象。

如果有 webpack 经验的人可以建议这是否是处理这个问题的正确方法,我会很感兴趣?

4

1 回答 1

3

PapaParse 现在应该可以在本次提交中使用 webpack 了。另见PR172

于 2015-03-05T23:09:22.887 回答