【问题标题】:Loading PapaParse dynamically with webpack使用 webpack 动态加载 PapaParse
【发布时间】:2015-04-18 03:25:27
【问题描述】:

我正在使用 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 库中 this line 的错误 Uncaught ReferenceError: Papa is not defined

if (!config.chunkSize)
            config.chunkSize = Papa.LocalChunkSize;

有什么方法可以实现吗?

[编辑]

我对 requirejs / webpack 完全陌生,所以我不确定这是否是解决此问题的正确方法,但我设法通过使用以下 @987654322 使其正常工作(不幸的是仍然污染了窗口命名空间) @:

require("imports?this=>window!exports?global.Papa!./papaparse.js").parse(event.target.files[0], {
  complete: function(results) {
  ...
  }
}

据我了解,第一个指令 (imports?this=&gt;window) 使用导入加载程序将 global parameter 设置为窗口对象(而不是空对象)。这使得在 PapaParse 中对global.documentglobal.postMessage() 的调用起作用(并且似乎也使对Papa 的不合格调用起作用——即那些没有前缀为global.Papa 的调用)。第二个指令(exports?global.Papa)表示将 Papa 对象导出为 require 调用的返回对象。

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

【问题讨论】:

  • 在 Papa Parse 中,Papa 变量是在全局上下文中创建的。我不熟悉 webpack 或 RequireJS 或类似的东西,但我的猜测是 webpack 正在搞乱全局命名空间......?
  • @Matt 我做了一些实验并用我的发现更新了这个问题。我不确定库支持通过

标签: javascript webpack papaparse


【解决方案1】:

PapaParse 现在应该可以在 this commit 上使用 webpack。另见PR172

【讨论】:

  • 因为我被困在这里,所以要详细说明,es6语法是import Papa from 'papaparse';。从那里您可以按照文档描述的方式使用它。
猜你喜欢
  • 2018-09-13
  • 2016-01-24
  • 2017-08-22
  • 2018-02-24
  • 2018-02-11
  • 2018-06-05
  • 1970-01-01
  • 2017-03-31
相关资源
最近更新 更多