RequireJS优化器引发引用错误:未定义文本

RequireJS优化器引发引用错误:未定义文本,requirejs,r.js,requirejs-text,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

我一直在使用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'
        }
    }

});
主配置文件

({

    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-o app.build.js
跟踪的依赖项:../main
ReferenceError:未定义文本
在模块树中:
../main
应用程序
路由器
浏览/网页/主页
视图/面板/所有存储面板
文本
错误:引用错误:未定义文本
在模块树中:
../main
应用程序
路由器
浏览/网页/主页
视图/面板/所有存储面板
文本
评估时(评估时为(C:\code\Web\DixonsDashboard\deploy\\u compiler\r.js:23699:64),:1:1)
我不知道为什么它发现文本是未定义的。通往它的道路是绝对正确的-该网站在当前的扩展格式中就像一个魅力。我已经尝试了r.js可用的所有选项,但它们似乎都没有任何区别

如果我删除了这个文件,我会得到一个“没有这样的文件或目录”的错误,所以看起来它正在查找这个文件


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

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



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

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



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

我遵循的一条规则是
baseUrl
是包含脚本的文件夹,相对于加载脚本的HTML页面,与build.js无关。根据这一点,构建文件和配置文件的my
baseUrl
是相同的。你能试一下吗?我试了一下,但我却犯了很多其他的错误。我将编译器脚本与主模块一起移动到目录中,结果相同,不幸的是=/我遵循的规则是
baseUrl
是包含脚本的文件夹,相对于加载脚本的HTML页面,而不是相对于build.js。根据这一点,构建文件和配置文件的my
baseUrl
是相同的。你能试一下吗?我试了一下,但我却犯了很多其他的错误。我将编译器脚本与主模块一起移动到目录中,结果相同,不幸的是=/I将在下次访问我的repo时完全尝试此操作,并让您知道它是如何运行的。没问题,我很高兴我能提供帮助。我将在下次访问我的repo时完全尝试此操作,并让您知道它是如何运行的。没问题,我很高兴能帮上忙。