【发布时间】:2022-07-01 00:51:25
【问题描述】:
我正在设置 craco 以在 CRA 中使用 CKEditor。我在 Iconview 中不断收到错误消息。 修改正则表达式并没有改变任何东西。
此设置文件在其他现有项目中使用时正常工作,但在新项目中继续出现错误。 我想知道是什么导致了这个错误。
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;
},
},
};
错误日志
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}
【问题讨论】: