路径更新后,requirejs垫片丢失了

时间:2014-04-08 00:13:19

标签: javascript requirejs

我试图通过动态更改路径来显示标记ckeditor。它最初设置但如果打开一个标志我尝试更改它。 当我不改变路径时,垫片工作正常并且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。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这是您使用的map配置:

map: {
    '*': {
        'ckeditor_core':  'lib/ckeditor-old/ckeditor'
    }
}

当此地图生效且RequireJS遇到模块ckeditor_core的请求时,它首先要做的是用lib/ckeditor-old/ckeditor请求替换此请求。然后RequireJS检查垫片。由于lib/ckeditor-old/ckeditor没有为其定义填充程序,但这是需要填充程序的模块,因此模块的值为undefined。你需要做的是为它添加一个垫片:

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