至少在过去的两个小时里,我一直试图找到答案而没有任何运气。我希望这里有人可以提供帮助。
使用JasmineHeadlessWebkit运行我的Jasmine规范时,我得到了这个ReferenceError: Can't find variable: $
。
奇怪的是,这只发生在我说
时$ ->
game.init()
在我的game.coffee
文件中。
我可以$
继续使用game.coffee
而不会出现任何问题window.game =
init: ->
$('.gamelayer').hide()
$('#gamestartscreen').show()
。例如:
specs/javascripts/helpers/
这根本不是问题。
此外,测试在Chrome中运行正常。
所以,我假设这与jQuery没有及时加载有关,但我无法弄清楚为什么。
我在jasmine.yml
和helpers
中有jQuery我在spec_files
和src_files
之前提到了{{1}}但是这似乎并不是真的有所作为。
所以,如果有人知道如何在运行Jasmine的规范时确保jQuery完全加载,我真的很感激任何帮助。
另外,如果您需要任何其他信息,请与我们联系。
谢谢。
答案 0 :(得分:0)
您可以尝试两种解决方案:
第一个延迟game.init()等待加载jQuery:
function initJQuery() {
if (typeof(jQuery) == 'undefined') {
setTimeout("initJQuery()", 50);
} else {
game.init();
}
}
第二个调用jQuery函数来防止与库冲突(在代码的开头运行它):
jQuery.noConflict()
你可以尝试,但我不确定这是你的最佳解决方案。注意使用这个解决方案,你必须将所有'$'改为'jQuery'
答案 1 :(得分:0)
我也遇到了这个问题。我通过更改我的jasmine.yml来加载jquery,然后加载其余的javascript文件来修复它:
src_files: - public/js/jquery.js - public/js/**/*.js