1

我一直在試圖找到一個答案,至少在過去兩個小時沒有任何運氣。我希望這裏有人能夠幫助。

當使用JasmineHeadlessWebkit運行我的Jasmine規格時,我得到了這個ReferenceError: Can't find variable: $

奇怪的是,當我說

$ -> 
    game.init() 

在我game.coffee文件這只是發生。

我可以使用$沒有任何問題進一步下降game.coffee。例如:

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

這完全沒有問題。

此外,測試在Chrome中可以正常工作。

所以,我假設這與jQuery沒有被加載的時間,但我不明白爲什麼。

我的jQuery在specs/javascripts/helpers/jasmine.yml我提到的spec_filessrc_fileshelpers但這似乎並沒有真正發揮作用。所以,如果任何人有任何想法,我怎麼能確保jQuery完全加載時,茉莉花的規格運行,我真的很感激任何幫助。

此外,請讓我知道你是否需要任何額外的信息。

謝謝。

+0

你所得到的錯誤提示,jQuery是不包含在代碼中的這一點:我改變我的jasmine.yml它加載javascript文件的其餘部分之前加載jquery的固定它。你在該腳本之前包括jQuery嗎? – 2013-04-22 21:06:46

回答

0

你可以嘗試兩個解析:

第一個延遲game.init()等jQuery來加載:

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

第二個調用jQuery的功能,以防止發生衝突與庫(在你的代碼開始運行):

jQuery.noConflict() 

,你可以嘗試,但我不知道它在你的情況下,最好的解決辦法。注意使用這個解決方案,你必須將所有'$'改爲'jQuery'

+0

謝謝。你提到的第一件事是有效的,但我認爲這更像是一種解決方法而不是真正的解決方案。當文檔準備就緒時('$(document).ready - >''''' - >'),我想'game.init()',而不是在jQuery完全加載的時候。它應該在'game.coffee'加載之前加載並且可用,然後調用'$ - >'感謝您的努力! – dschwertfeger 2013-04-23 05:44:10

0

我也遇到了這個問題。

 
src_files: 
    - public/js/jquery.js 
    - public/js/**/*.js 
相關問題