我有一个使用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编译器而不用它......
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
我知道它有点晚了,但你有没有尝试过jQuery的垫片呢?
shim:{
'jquery': {
deps: [],
exports: 'jQuery'
},
...
}
干杯, 约翰内斯