0

这是向我的控制台抛出的错误

Uncaught TypeError: Object  has no method 'chain' hbs.js:282
getExternalDeps hbs.js:282
(anonymous function) hbs.js:306
xhr.onreadystatechange hbs.js:73
Uncaught Error: Load timeout for modules: hbs!templates/reset_unnormalized2,hbs!templates/pages/login_unnormalized3,hbs!templates/reset,hbs!templates/pages/login
http://requirejs.org/docs/errors.html#timeout require.js:160

我正在使用handlebars-require-plugin,我什至尝试将“hbs”添加到我的require shim,但结果是一样的。

这是我的木偶视图代码:

define([
    "bootstrap", // bootstrap does not export anything, so no arg sent to our function
    "marionette", 
    "session", "events",
    "hbs!templates/pages/login"
], function( Marionette, Session, Events, LoginTemplate ){
    return Marionette.View.extend({
        template : {
            type : "handlebars",
            template : LoginTemplate
        }
    });
});

我不知道这里发生了什么,我进行的每一次搜索都没有产生有用的结果。

发生了什么?为什么会这样?请帮忙。

4

2 回答 2

3

可能是您的回调参数定义不正确?如果一个值没有定义任何东西(例如引导程序),那么让它最后。现在你的 Marionette arg 包含 bootstrap 的未定义值,Session 现在包含 Marionette 等。

define([
    "marionette", 
    "session", "events",
    "hbs!templates/pages/login",
    "bootstrap", // bootstrap does not export anything, so no arg sent to our function
], function( Marionette, Session, Events, LoginTemplate ){
    return Marionette.View.extend({
        template : {
            type : "handlebars",
            template : LoginTemplate
        }
    });
});
于 2013-01-14T13:46:56.513 回答
0

我想到了。

事实证明,我的问题与hbs插件无关,因为它与使用它、车把和 json2 与 requirejs 无关。

如上所述,第一个问题是通过lodash使用underscore. 我的印象是这两个是可以互换的,但显然情况并非如此。

然后我遇到了错误,"stringify" is not a function on the object null导致我发现JSON里面没有定义hbs

我不得不回到我的require.config({ shim:{} })并定义 json2 导出JSON

现在我没有收到错误,hbs但我必须弄清楚为什么我的视图没有显示。

这是我的配置代码,如果其他人有兴趣。

require.config({
    // paths to required javascript files
    paths : {
        bootstrap   : "../assets/js/bootstrap.min",
        jquery      : "../assets/js/jquery.min",
        json2       : "../assets/js/json2",
        underscore  : "../assets/js/underscore.min",
        backbone    : "../assets/js/backbone.min",
        marionette  : "../assets/js/backbone.marionette.min",
        hbs         : "../assets/js/hbs",
        handlebars  : "../assets/js/handlebars",
        i18nprecompile : "../assets/js/hbs/i18nprecompile"
    },

    // "shim" will allows us to load in deps synchronously so that we do not
    // run into a situation where dependencies are not available
    shim : {
        json2       : { exports : "JSON" },
        jquery      : { exports : "jQuery" },
        underscore  : { exports : "_" },
        backbone    : {
            deps : ["jquery", "underscore", "json2"],
            exports : "Backbone"
        },
        marionette  : {
            deps : ["jquery", "underscore", "json2", "backbone"],
            exports : "Marionette"
        },
        hbs : {
            deps : ["jquery", "underscore", "json2", "i18nprecompile", "handlebars"],
            exports : "hbs"
        },
        bootstrap : { deps : ["jquery"] }
    }
});
于 2013-01-14T19:48:45.097 回答