我最近切换到ember-data#canary,然后r.js
开始失败。
[Error: Error: ENOENT, no such file or directory
'/scripts/lib/ember-data/ember-data/core.js'
In module tree:
app/main
app/app
ember-data
at Object.fs.openSync (fs.js:427:18)
]
这是构建配置文件
`File: build.js`
var config = {
mainConfigFile: '/scripts/common.js',
}
这是requirejs配置文件
requirejs.config({
paths: {
ember: 'ember/ember',
jquery: 'jquery/dist/jquery',
requirejs: 'requirejs/require',
handlebars: 'handlebars/handlebars',
'ember-data': 'ember-data/ember-data',
},
shim: {
ember: {
deps: [
'handlebars',
'jquery'
],
exports: 'Ember'
},
'ember-data': {
deps: [
'ember'
],
exports: 'DS'
},
}
});
这就是我使用ember-data
的方式:
define(['ember', 'ember-data'], function(Ember, DS) {
});
你可以看到ember-data canary build here。
答案 0 :(得分:0)
这个bug已经从ember-data 1.0.0-beta.9中得到满足,因为在这个版本中已经在源代码中更新了函数require
。您可以恢复为beta.8或尝试使用插件derequire解决此问题(grunt-derequire,gulp-derequire)。
我已经完成了这项任务:
gulp.task('build-derequire', function() {
return gulp.src([paths.src.common + '/bower_components/**/ember-data*.js'])
.pipe($.derequire([
{
from: 'require',
to: '_dereq_'
},
{
from: 'define',
to: '_defi_'
}
]))
.pipe(gulp.dest(paths.dev_dist + '/scripts/lib'));
});