Javascript 路径更新后requirejs垫片丢失

Javascript 路径更新后requirejs垫片丢失,javascript,requirejs,Javascript,Requirejs,我正试图通过动态更改路径来启用标记编辑器。它最初是设置的,但如果一个标志被打开,我会尝试更改它。 当我不更改路径时,垫片工作正常,ckeditor得到解决。当我在检查标志后更改路径时,ckeditor是未定义的 config.js require.config({ paths: { ... ckeditor_core: 'lib/ckeditor/ckeditor', ... }, shim: { ... ckeditor_core: {

我正试图通过动态更改路径来启用标记编辑器。它最初是设置的,但如果一个标志被打开,我会尝试更改它。 当我不更改路径时,垫片工作正常,ckeditor得到解决。当我在检查标志后更改路径时,ckeditor是未定义的

config.js

require.config({
paths: {
    ...
    ckeditor_core: 'lib/ckeditor/ckeditor',
    ...
},
shim: {
    ...
    ckeditor_core: {
        exports: 'CKEDITOR'
    },
    ...
}
});

if (jx && jx.activeFeatures && !jx.activeFeatures.CKEDITOR_4) {
    require.config({
        map : {
            '*' : {
                'ckeditor_core' :  ''lib/ckeditor-old/ckeditor''
            }
        });
}
}
define({});
我曾尝试在几个不同的地方对地图进行此更改,但我总是遇到相同的问题:

TypeError: ckeditor is undefined
在我看来,在我再次设置路径后,垫片似乎已损坏。当我在控制台中时,我能够很好地解析CKEDITOR


谢谢你的帮助

这是您使用的
map
配置:

map: {
    '*': {
        'ckeditor_core':  'lib/ckeditor-old/ckeditor'
    }
}
当此映射生效并且RequireJS遇到对模块
ckeditor\u core
的请求时,它所做的第一件事是将此请求替换为对
lib/ckeditor old/ckeditor
的请求。然后RequireJS检查垫片。由于
lib/ckeditor old/ckeditor
没有为其定义垫片,但这是一个需要垫片的模块,因此该模块的值是
未定义的
。您需要做的是为其添加一个垫片:

'lib/ckeditor-old/ckeditor': {
    exports: 'CKEDITOR'
},

太好了,这对我有用。我添加了一个名为“ckeditor\u core\u old”的新路径,然后为“ckeditor\u core\u old”添加了一个垫片。