【发布时间】:2015-01-27 03:33:23
【问题描述】:
我有一个非常简单的 React mixin,它使用 jQuery 来触发事件
MyMixin = {
trackStructEvent: function () {
args = Array.prototype.slice.call(arguments);
$('body').trigger('myEvent', args);
}
module.exports = MyMixin
这是作为使用 browserify 的一组新组件的一部分导入主站点的。由于拥有这些组件的主站点将始终包含 jQuery,因此我不希望 jQuery 与 browserify 一起使用,因为它会被复制。
就行为而言,这不是问题 - 但是在运行 jest 以使用此 mixin 对组件进行单元测试时会导致问题,并引发错误。
ReferenceError: $ is not defined
我知道我可以通过 browserify 包含 jQuery 来解决这个问题,但这会将 2 个副本加载到我的网站中。
有什么办法可以告诉我的 react 组件 jQuery 已经存在于窗口中而不用担心它?
【问题讨论】:
-
你试过
var $ = window.jQuery吗? -
另一种方法是在browserify中使用
external选项 -
@David - 在我的组件中使用
external似乎可以正常工作,但我无法让它玩得很好。现在我已经添加了一个检查$在调用它之前定义。我不会把它作为答案,因为它不是问题的真正解决方案。它只是让我安全地通过我的笑话 -
我也对这个问题的答案感兴趣,对我来说,它本身就是已经加载的 React。也许你的测试顶部的 global.React = require('react/addons') 会做......
-
或者在你的情况下 global.$ = require('jquery') :)
标签: jquery reactjs jestjs reactjs-testutils