RequireJS правильно загружает CodeMirror, но UIKit говорит, что он не определен
Я использую 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 ответ
У меня была такая же проблема с 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'
})
});