-1

这是我的 config.js 文件的样子:

require.config({
    baseUrl: '../',
    paths: {
        jQuery:            'js/jquery-1.10.2.min',
        uiEffectsCore:     'js/jQueryUIEffectsCore',
        //Handlebars:        'js/handlebars',
        SyntaxHighlighter: 'js/syntaxhighlighter/scripts/shCore',
        shXml:             'js/syntaxhighlighter/scripts/shBrushXml'
    },
    shim: {
        jQuery: {
            exports: 'jQuery'
        },
        uiEffectsCore: {
            deps: ['jQuery']
        },
        shXml: {
            deps: ['SyntaxHighlighter']
        }
    }
});

require(['js/main']);

然后我的 main.js 看起来像这样:

define(function(require){

    require('jQuery');
    require('uiEffectsCore');
    require('SyntaxHighlighter');
    require('shXml');

});

我认为问题在于我的 shXml 文件周围没有define(...)包装器......我想知道是否可以在不必使用该包装器的情况下完成这项工作。也许出口垫片会做到这一点。

就目前而言,我每次都会收到此错误。

github上也有人问过这个问题。

4

1 回答 1

1

查看这篇文章,同样来自 github。我对此进行了测试,效果很好,但是您必须在此处将您的 brush.js 文件(在 syntaxhighlighter 内)的第一行替换为以下行:

SyntaxHighlighter = SyntaxHighlighter || (typeof require !== 'undefined'? require('shCore').SyntaxHighlighter : null);

我什至不知道为什么这可以解决问题,但确实可以,您可以像这样加载脚本:

define(function(require){

    require('jQuery');
    require('uiEffectsCore');
    require('SyntaxHighlighter');
    require('shXml');
    require('shCss');
    require('shJs');
    require('Raphael');

您需要在配置中使用 shim 来获取依赖项:

 paths: {
        SyntaxHighlighter: 'js/syntaxhighlighter/scripts/shCore',
        shXml:             'js/syntaxhighlighter/scripts/shBrushXml',
        shCss:             'js/syntaxhighlighter/scripts/shBrushCss',
        shJs:              'js/syntaxhighlighter/scripts/shBrushJScript'
    },
    shim: {
        shXml: {
            deps: ['SyntaxHighlighter']
        },
        shCss: {
            deps: ['SyntaxHighlighter']
        },
        shJs: {
            deps: ['SyntaxHighlighter']
        }
    }
于 2013-08-07T01:30:17.323 回答