RequireJS正确加载CodeMirror,但UIKit表示它没有定义

时间:2014-10-11 16:18:24

标签: node.js requirejs uikit sails.js codemirror

我在我的项目中使用RequireJS来加载我的JS依赖项。

这是我的配置文件:

require.config({
    'baseUrl' : '/js',
    'paths' : {
        'angular' : 'dependencies/angular',
        'cm' : 'dependencies/codemirror',
        'marked' : 'dependencies/marked',
        'jquery' : 'dependencies/jquery',
        'sails' : 'dependencies/sails.io',
        'uikit' : 'dependencies/uikit/js/uikit'
    },
    'config' : {
        'uikit' : {
            'base' : 'dependencies/uikit/js'
        }
    },
    'shim' : {
        'angular' : {
            exports : 'angular'
        },
        'cm/lib/codemirror' : {
            exports : 'codemirror'
        },
        'jquery' : {
            exports : 'jquery'
        },
        'sails.io' : {
            deps : ['socket.io'],
            exports : 'io'
        },
        'uikit' : {
            deps : ['jquery', 'cm/lib/codemirror']
        }
    }
});

define([
    'angular',
    'uikit!htmleditor',
    'cm/lib/codemirror',
    'cm/addon/mode/overlay',
    'cm/mode/markdown/markdown',
    'cm/mode/xml/xml',
    'cm/mode/gfm/gfm',
    'marked'
], function(angular, uikit, CodeMirror) {

    var htmleditor = uikit.htmleditor(document.getElementById("formNewArticleTextarea"), {
        markdown : true,
        mode : 'tab'
    })
});

问题是,每次重新加载页面时,UIKit HTMLEditor插件都会返回此错误:

Uncaught ReferenceError: CodeMirror is not defined 

1 个答案:

答案 0 :(得分:0)

CodeMirror和Mergely遇到了同样的问题。

尝试将CodeMirror故意放入init函数顶部的全局(窗口)范围。请参阅"添加此行"下面:

define([
    'angular',
    'uikit!htmleditor',
    'cm/lib/codemirror',
    'cm/addon/mode/overlay',
    'cm/mode/markdown/markdown',
    'cm/mode/xml/xml',
    'cm/mode/gfm/gfm',
    'marked'
], function(angular, uikit, CodeMirror) {
    window.CodeMirror = CodeMirror; // <-- Add this line
    var htmleditor = uikit.htmleditor(document.getElementById("formNewArticleTextarea"), {
        markdown : true,
        mode : 'tab'
    })
});