要求 JS填充程序在更新路径后丢失

requirejs shim lost after path is updated

本文关键字:路径 更新 JS 填充 程序 要求      更新时间:2023-09-26

我正在尝试通过动态更改路径来标记 ckeditor。 它最初是设置的,但如果打开了标志,我会尝试更改它。当我不更改路径时,填充程序工作正常,并且 ckeditor 已解决。 当我在检查标志后更改路径时,ckeditor 是未定义的。

配置.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_core的请求时,它做的第一件事就是将此请求替换为 lib/ckeditor-old/ckeditor 请求。然后 RequireJS 检查填充程序。由于lib/ckeditor-old/ckeditor没有为其定义填充程序,但这是一个需要填充程序的模块,因此模块的值为 undefined 。您需要做的是为它添加一个垫片:

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