I am setting up craco to use CKEditor in CRA. I keep getting an error in Iconview. Modifying the regex didn't change anything.
This setting file worked normally when used in other existing projects, but errors continue to occur in new projects. I would like to know what is causing this error.
craco.config.js
const CKEditorWebpackPlugin = require("@ckeditor/ckeditor5-dev-webpack-plugin");
const { styles } = require("@ckeditor/ckeditor5-dev-utils");
module.exports = {
webpack: {
configure: (config, { env, paths }) => {
config.plugins.push(
new CKEditorWebpackPlugin({
language: "ko",
addMainLanguageTranslationsToAllAssets: true,
})
);
const regExpThemeIconSvg =
/ckeditor5-[^/\\]+[/\\]theme[/\\]icons[/\\][^/\\]+\.svg$/;
const regExpThemeCss = /ckeditor5-[^/\\]+[/\\]theme[/\\].+\.css/;
const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;
config.module.rules.push(
{ test: regExpThemeIconSvg, use: ["raw-loader"] },
{
test: regExpThemeCss,
use: [
{
loader: "style-loader",
// options: { injectType: "singletonStyleTag" }
},
{
loader: "postcss-loader",
options: styles.getPostCssConfig({
themeImporter: {
themePath: require.resolve("@ckeditor/ckeditor5-theme-lark"),
},
minify: true,
}),
},
],
}
);
config.module.rules.forEach((rule) => {
if (rule.oneOf) {
rule.oneOf.forEach((subRule) => {
if (String(subRule.test) === String(cssRegex)) {
subRule.exclude = [cssModuleRegex, regExpThemeCss];
}
if (String(subRule.test) === String(cssModuleRegex)) {
subRule.exclude = [regExpThemeCss];
}
if (
String(subRule.loader).includes("file-loader") &&
Array.isArray(subRule.exclude)
) {
subRule.exclude.push(regExpThemeIconSvg, regExpThemeCss);
}
});
}
});
return config;
},
},
};
error log
react_devtools_backend.js:3973 TypeError: Cannot read properties of null (reading 'getAttribute')
at IconView._updateXMLContent (iconview.js:100:1)
at IconView.render (iconview.js:76:1)
at IconView.<anonymous> (observablemixin.js:258:1)
at IconView.fire (emittermixin.js:200:1)
at IconView.<computed> [as render] (observablemixin.js:262:1)
at ViewCollection._renderViewIntoCollectionParent (viewcollection.js:204:1)
at ViewCollection.<anonymous> (viewcollection.js:65:1)
at ViewCollection.fire (emittermixin.js:200:1)
at ViewCollection.addMany (collection.js:220:1)
at ViewCollection.add (collection.js:185:1) {phase: 'initialization', willEditorRestart: false}