【发布时间】:2014-06-12 15:19:41
【问题描述】:
我有一个使用 require.js 的 Ember 应用程序,它在优化之前在浏览器中正常工作,但是当我尝试通过 r.js 运行它进行优化时,我收到来自 Ember 的错误:“错误:无法查找模块 jquery"。
我看的更深了一点,似乎 jQuery 和 $ 全局变量在 r.js 尝试 eval() Ember 时没有定义。
当我稍微修改为使用 Ember.Handlebars 而不是常规 Handlebars 的车把插件需要 Ember 时,它会失败(修改后的版本: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: 似乎 node 和 r.js 不加载 jQuery。我认为这就是 Ember 在构建时无法找到 jQuery 的原因。此处引用了该问题:
https://github.com/jrburke/r.js/issues/85
我可能需要找到一种方法来消除 jQuery 依赖项,这样我就可以在构建时使用 Ember 的 Handlebars 编译器而不需要它...
有人知道我该如何解决这个问题吗?
【问题讨论】:
标签: javascript jquery ember.js requirejs