javascript - Ember和Require.JS优化器“错误:无法找到模块jquery”

时间:2014-04-27 00:25:24

标签: javascript jquery ember.js requirejs

我有一个使用require.js的Ember应用程序,它在优化之前在浏览器中正常工作,但是当我尝试通过r.js运行它进行优化时,我收到来自Ember的错误:“错误:无法找到模块jquery“。

我看起来更深一点似乎jQuery和$全局变量没有被r.js尝试eval()Ember时定义。

当我从车把插件中要求Ember使用Ember.Handlebars而不是常规Handlebars(修改后的版本:https://github.com/epeli/requirejs-hbs/blob/master/hbs.js

时,它失败了

我当前的构建配置是:

({
  name: 'main',
  out: 'main.min.js',
  optimize: 'uglify2',
  baseUrl: '../static/js/',

  paths: {
    jquery: 'lib/jquery-1.11.0',
    handlebars: 'lib/handlebars-1.3.0',
    ember: 'lib/ember-1.5.1',
    hbs: 'plugin/hbs',
    text: 'plugin/text-2.0.12',
  },
  shim: {
    handlebars: {
        exports: 'Handlebars'
    },
    ember: {
        deps: [ 'jquery', 'handlebars' ],
        exports: 'Ember'
    }
  },
  hbs: {
    templateExtension: '.html',
  }
})

r.js的完整错误是:

Error: Could not find module jquery
In module tree:
    main
      app/App
        app/view/MainView
          hbs

at t (eval at <anonymous> (r-2.1.11.js:25343:38), <anonymous>:10:374)

我也尝试在我的构建配置中包含“wrapShim:true”,但没有成功......

修改我尝试从我的hbs插件中的依赖项中删除'ember',并发现我的构建配置中的“include”行存在问题,因此我删除了该行并且能够成功构建。但是,将'ember'添加回hbs的deps仍然会导致原始问题再次出现......

编辑2 似乎节点和r.js不加载jQuery。我假设这就是为什么Ember在构建时无法找到jQuery的原因。这里引用了这个问题:

https://github.com/jrburke/r.js/issues/85

我可能需要找到一种方法来存根jQuery依赖关系,这样我就可以在构建时使用Ember的Handlebars编译器而不用它......

有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我知道它有点晚了,但你有没有尝试过jQuery的垫片呢?

shim:{  
    'jquery': {
      deps: [],
      exports: 'jQuery'
    },
...
}

干杯, 约翰内斯