1

至少在过去的两个小时里,我一直试图找到答案,但没有任何运气。我希望这里有人可以提供帮助。

我在ReferenceError: Can't find variable: $使用 JasmineHeadlessWebkit 运行我的 Jasmine 规范时得到了这个。

奇怪的是,这只发生在我说

$ ->
  game.init()

在我的game.coffee档案中。

我可以在$没有任何问题的情况下使用game.coffee. 例如:

window.game =
  init: ->
    $('.gamelayer').hide()
    $('#gamestartscreen').show()

这完全没有问题。

此外,测试在 Chrome 中运行良好。

所以,我假设这与 jQuery 没有及时加载有关,但我不知道为什么。

我有 jQuery in specs/javascripts/helpers/and injasmine.yml我提到了helpers之前的spec_filesandsrc_files但这似乎并没有真正的区别。

因此,如果有人知道如何确保在运行 Jasmine 的规范时完全加载 jQuery,我将非常感谢任何帮助。

另外,如果您需要任何其他信息,请告诉我。

谢谢你。

4

2 回答 2

0

我也遇到了这个问题。我通过在加载其余 javascript 文件之前更改我的 jasmine.yml 以加载 jquery 来修复它:

src_files:
  - 公共/js/jquery.js
  - 公共/js/**/*.js
于 2014-01-17T19:12:51.650 回答
0

您可以尝试两种解决方案:

第一个延迟 game.init() 等待 jQuery 被加载:

function initJQuery() {
    if (typeof(jQuery) == 'undefined') {
        setTimeout("initJQuery()", 50);
    } else {
        game.init();
    }
}

第二个调用一个 jQuery 函数来防止与库发生冲突(在代码开头运行它):

jQuery.noConflict()

您可以尝试,但我不确定这是否是您情况下的最佳解决方案。请注意使用此解决方案,您必须将所有 '$' 更改为 'jQuery'

于 2013-04-22T21:09:47.150 回答