的ReferenceError:找不到变量:运行JasmineHeadlessWebkit当$(Re

2019-10-18 02:10发布

我一直试图找到至少一个答案,这最后两个小时,没有任何运气。 我希望有人在这里也许能提供帮助。

我得到这个ReferenceError: Can't find variable: $使用JasmineHeadlessWebkit运行我的茉莉花规格时。

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

$ ->
  game.init()

在我game.coffee文件。

我可以用$没有任何问题的进一步下跌game.coffee 。 例如:

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

这是一点问题都没有。

此外,测试在Chrome中工作正常。

所以,我假定这是与jQuery的没有被及时加载到去做,但我想不出为什么。

我有jQuery的在specs/javascripts/helpers/jasmine.yml我提到的helpers在之前spec_filessrc_files但是这似乎并没有真正发挥作用。

因此,如果任何人有任何想法,我怎么能确保当茉莉花的规范是运行jQuery是完全加载,我真的很感激任何帮助。

另外,请让我知道如果你需要任何额外的信息。

谢谢。

Answer 1:

你可以尝试两个解析:

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

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

第二个调用一个jQuery函数,防止冲突与库(在你的代码开始运行):

jQuery.noConflict()

你可以尝试,但我不知道它在你的情况下,最好的解决办法。 注意使用此解决方案,你必须改变所有“$”到“jQuery的”



Answer 2:

我就遇到了这个问题也。 我固定它通过改变我的jasmine.yml它加载javascript文件的其余部分之前加载的jQuery:

src_files:
  - public/js/jquery.js
  - public/js/**/*.js


文章来源: ReferenceError: Can't find variable: $ when running JasmineHeadlessWebkit