使用带jasmine的require.js加载返回404的脚本

时间:2012-03-28 16:05:55

标签: backbone.js requirejs jasmine

我正在使用Backbonejs并使用require.js加载每个依赖的骨干窗口小部件,然后启动我的应用程序并将所有内容放入自定义命名空间,在本例中为“Foo”。我想让Jasmine加载这个加载器文件并获取所有依赖的javascripts(位于我的主应用程序的/ public / js中),然而,我得到所有404的,因为Jasmine不知道/ public端口8888上的/ js目录。如何让jasmine加载这些javascripts?

  Foo = {}; 
  jQuery(function(){
    var include = ['/js/widget.js','/js/delta_widget.js','/js/inbox.js','/js/time_widget.js','/js/high_stock_widget.js','/js/daily_summary_widget.js'];
    require(include,function(){
      $.getScript('/js/app.js');
    }); 
  });

对于每个javascripts,我得到: 无法加载资源:服务器响应状态为404(未找到)http://0.0.0.0:8888/js/widget.js

1 个答案:

答案 0 :(得分:2)

看起来你的Jasmine加载器文件/ SpecRunner与require.js加载器(默认情况下为main.js)位于不同的目录中。您必须通过执行以下操作将require.js配置为使用不同的基本路径:

jQuery(function(){
require.config(
{
  baseUrl: '/public'
});

var include = ['js/widget.js',
               'js/delta_widget.js',
               'js/inbox.js',
               'js/time_widget.js',
               'js/high_stock_widget.js',
               'js/daily_summary_widget.js'];

require(include,function()
{
  $.getScript('/js/app.js');
});

您必须配置上述“baseUrl”属性以指向正确的URL /路径。 例如,如果您的Jasmine SpecRunner位于:

基 - main.js - js - widget.js - app.js - 自由人 - 茉莉花 --- SpecRunner.html

然后你需要配置

baseUrl: "../../"

希望这有帮助。