我一直在使用r.js来尝试缩小一个相当大的项目,我遇到了文本插件的问题。我正在使用node.js和一个如下构建文件:
构建文件
({
name: '../main',
baseUrl: '../../js/app',
appDir: "./app",
dir: 'build',
paths: {
jquery: '../lib/jquery/jquery-1.10.2.min',
underscore: '../lib/underscore/underscore-min',
backbone: '../lib/backbone/backbone-min',
text: '../lib/require/text',
picker: '../lib/pickadate/picker',
pickerDate: '../lib/pickadate/picker.date',
pickerLegacy: '../lib/pickadate/legacy'
},
mainConfigFile : '../js/main.js'
})
主配置文件
requirejs.config({
baseUrl: 'js/app',
paths: {
jquery: '../lib/jquery/jquery-1.10.2.min',
underscore: '../lib/underscore/underscore-min',
backbone: '../lib/backbone/backbone-min',
text: '../lib/require/text',
picker: '../lib/pickadate/picker',
pickerDate: '../lib/pickadate/picker.date',
pickerLegacy: '../lib/pickadate/legacy'
},
shim: {
picker: ['jquery', 'pickerLegacy'],
pickerDate: {
deps: ['jquery', 'picker'],
exports: 'DatePicker'
},
backbone: {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
underscore: {
exports: '_'
},
text : {
exports : 'text'
}
}
});
上述参考文献均已正确验证。每当我尝试编译它时,我在控制台中得到以下输出:
node r.js -o app.build.js
Tracing dependencies for: ../main
ReferenceError: text is not defined
In module tree:
../main
app
router
views/pages/home
views/panel/allStoresPanel
text
Error: ReferenceError: text is not defined
In module tree:
../main
app
router
views/pages/home
views/panel/allStoresPanel
text
at eval (eval at <anonymous> (C:\code\Web\DixonsDashboard\deploy\_compiler\r.js:23699:64), <anonymous>:1:1)
我不知道为什么它会发现文本未定义。它的路径绝对是正确的 - 该网站的工作方式就像当前扩展格式的魅力。我已经尝试了r.js的所有可用选项,但它们似乎没有任何区别。
如果我删除了该文件,我会收到“没有这样的文件或目录”错误,所以它看起来好像找到了该文件。
有人能指出我在这里缺少什么吗?
答案 0 :(得分:5)
您只为{em>不 AMD兼容的插件配置shim
。 “text”插件已经与AMD兼容,因此通过shim
机制运行它实际上会破坏它。
我刚刚使用您的代码的简化版本进行了测试:包括shim
部分中的文本确实显示“ReferenceError:text not defined”,删除它会使构建工作正常。