RequireJS Optimizer抛出ReferenceError:未定义文本

时间:2013-10-22 14:05:29

标签: requirejs r.js requirejs-text

我一直在使用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的所有可用选项,但它们似乎没有任何区别。

如果我删除了该文件,我会收到“没有这样的文件或目录”错误,所以它看起来好像找到了该文件。

有人能指出我在这里缺少什么吗?

1 个答案:

答案 0 :(得分:5)

您只为{em>不 AMD兼容的插件配置shim。 “text”插件已经与AMD兼容,因此通过shim机制运行它实际上会破坏它。


我刚刚使用您的代码的简化版本进行了测试:包括shim部分中的文本确实显示“ReferenceError:text not defined”,删除它会使构建工作正常。