jQuery 浮点图表使用 webpack 生成“Uncaught TypeError: e.setTimeout is not a function”
Posted
技术标签:
【中文标题】jQuery 浮点图表使用 webpack 生成“Uncaught TypeError: e.setTimeout is not a function”【英文标题】:jQuery flot charts generate "Uncaught TypeError: e.setTimeout is not a function" with webpack 【发布时间】:2019-02-25 10:13:45 【问题描述】:当我通过 webpack 包含 jquery.flot.resize.js 时,会生成“Uncaught TypeError: e.setTimeout is not a function”。
这是我的代码。
import "jquery.flot/jquery.flot.js";
import "jquery.flot/jquery.flot.resize.js";
这样会在浏览器控制台中出现类型错误。
Uncaught TypeError: e.setTimeout is not a function
如果它使用标签加载相同的 javascript,它工作得很好。 该错误仅发生在 webpack 上。
【问题讨论】:
你能重现fiddle中的错误吗? 【参考方案1】:在我的例子中,以下语法解决了这个问题:
import * as [some-name] from '[reference to your file or directory]';
【讨论】:
【参考方案2】:该错误是由“jquery.flot.resize.js”中的假设引起的,即this
包含window
,使用webpack 编译时不成立。有问题的代码不是源代码本身,而是复制粘贴的依赖项(jQuery resize 事件)。
The problem seems to have been solved in October 2019 当他们粘贴不同版本的依赖项时。此更改已在 flot 4.2.0 中发布。
如果您需要使用早期版本的 flot,可以使用 webpack imports-loader 解决问题,例如(已将 imports-loader 添加到应用程序(开发)依赖项):
// ./webpack.config.js
module.exports =
...
module:
rules: [
test: require.resolve("jquery.flot/jquery.flot.resize.js"),
use: "imports-loader?this=>window"
]
;
【讨论】:
【参考方案3】:找到了解决方案,显然它比看起来更简单,因为它们发送以零数据调用的图表会失败,因此如果没有数据可绘制图表,则无需绘制图表。每月为零,然后验证是否没有数据可绘制,将消息类型“无数据”而不是将图形绘制为零它对我有用。
没有数据? (无结果):(图表)
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于jQuery 浮点图表使用 webpack 生成“Uncaught TypeError: e.setTimeout is not a function”的主要内容,如果未能解决你的问题,请参考以下文章
使用可视化图表对 Webpack 2 的编译与打包进行统计分析