1

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

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

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

4

1 回答 1

5

您只配置与AMDshim兼容的插件。“文本”插件已经与 AMD 兼容,因此通过该机制运行它实际上会破坏它。shim


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

于 2013-10-22T21:16:16.333 回答