带有durandal的Breeze导致'模块未加载未定义不是函数'错误

时间:2014-12-10 10:47:58

标签: breeze durandal-2.0

加载我的付款模块,我收到“无法加载路由模块(付款)”。未定义不是一个功能'错误。我已经尝试了一切,甚至将它回滚到一周前发生的一些提交,并继续得到同样的错误。经过大量的故障排除后,我将其追溯到我的dataservice。我发现当我删除所有对“微风”的引用时在我的数据服务中,它按预期加载(当然,虽然不起作用)。如果我添加'微风'回到'定义'依赖数组,我得到的undefined不是函数错误。

我还没有改变要求。 config,但我已将其粘贴到我的dataservice的define语句中。

require.config({
    paths: {
        'ko': '../Scripts/knockout-3.1.0',
        'breeze': '../Scripts/breeze.debug',
        'jquery': '../Scripts/jquery-2.1.1',
        'jquery-ui': '../Scripts/jquery-ui-1.11.2',
        'bootstrap': '../Scripts/bootstrap.min',
        'text': '../Scripts/text',
        'require': '../Scripts/require',

        // JS Object Serializer/deserializer.  Handled cyclic objects, efficient stringifying.
        'JSOG': '../Scripts/JSOG',
        'domReady': '../Scripts/domReady',
        'Q': '../Scripts/q',

        // Notifications
        'toastr': '../Scripts/toastr',

        //Durandal
        'durandal': '../Scripts/durandal',
        'plugins': '../Scripts/durandal/plugins',
        'transitions': '../Scripts/durandal/transitions',

        // Lazy-developer date formatting
        'moment': '../Scripts/moment.min'
    },
    map: {
        '*': { 'knockout': 'ko' } // Necessary for Durandal, expects Knockout to be 'knockout', not 'ko'
        //                           Breeze expects 'ko'??
    },
    shim: {
        'bootstrap': {
            deps: ['jquery'], // don't load the bootstrap.js until jquery is loaded
            exports: 'bootstrap'
        },
        'JSOG': {
            exports: 'JSOG'
        }
    }

和我对dataservice的define语句:

define(['ko', 'breeze', 'logger', 'Q', 'constants', 'JSOG'], function (ko,breeze,logger,Q,c,JSOG) {

请帮忙。我确定它很简单,但我一直在撕扯我的头发。

编辑:根据Jeremy的要求,这是堆栈跟踪:

TypeError: undefined is not a function
at proto.initialize     (http://localhost:62418/Scripts/breeze.debug.js:15785:26)
at initializeAdapterInstanceCore (http://localhost:62418/Scripts/breeze.debug.js:1870:14)
at Object.__config.getAdapterInstance (http://localhost:62418/Scripts/breeze.debug.js:1818:14)
at breeze.AbstractDataServiceAdapter.proto.initialize (http://localhost:62418/Scripts/breeze.debug.js:15437:30)
at initializeAdapterInstanceCore (http://localhost:62418/Scripts/breeze.debug.js:1870:14)
at __config.initializeAdapterInstance (http://localhost:62418/Scripts/breeze.debug.js:1791:12)↵    at __objectMap (http://localhost:62418/Scripts/breeze.debug.js:56:27)
at Object.__config.initializeAdapterInstances (http://localhost:62418/Scripts/breeze.debug.js:1765:12)
at http://localhost:62418/Scripts/breeze.debug.js:17358:15
at def (http://localhost:62418/Scripts/breeze.debug.js:10:34)"

即使我重构并摆脱Durandal和Require js,这个错误似乎也会发生。即使加载了Jquery(以及KO和Q),我在var $injector = ng.injector(['ng']);得到一个错误,显然它正在尝试加载角度ajax调用,即使没有定义angular。

1 个答案:

答案 0 :(得分:2)

看起来我想通了。我也在AngularJS做了一些开发工作,很多时候我为Chrome安装了AngularJS Batarang扩展。我有一段时间没用过它,所以我忘了它。我禁用它,关闭并重新打开浏览器 - Walla! - 一切都恢复了。

我猜是微风以某种方式检测到角度被加载在扩展中,然后试图加载$ http,它无法访问,一切都崩溃了。我不知道它为什么会在昨天开始发生(也许它已被禁用,并且不知何故偶然地再次启用)但这就是问题所在。我可以让错误发生或随意消失。