我让AI给我处理了,AI给出的错误原因是:
问题根因
你的 WordPress WXR XML 文件中有 229 个字段的值是纯数字,例如:
<wp:comment_author><![CDATA[1900]]></wp:comment_author>
<wp:comment_author><![CDATA[123]]></wp:comment_author>
<wp:comment_content><![CDATA[2333333333]]></wp:comment_content>
<title><![CDATA[2024]]></title>
Halo 迁移插件内部使用了一个叫 fast-xml-parser 的 XML 解析库,这个库有一个"自作聪明"的行为:当 CDATA 内的内容是纯数字时,它会自动将其从字符串转为 JavaScript 的 number 类型。
于是 "1900"(字符串)变成了 1900(数字)。
而插件代码在后续处理中,会对解析出的字段值调用 .toLowerCase() 方法(例如在 createSyntheticEmail 函数中生成邮件地址时)。数字类型没有 .toLowerCase() 方法,于是 JavaScript 抛出了:
TypeError: (intermediate value).toLowerCase is not a function
一句话总结:XML 解析库把纯数字的 CDATA 值转成了 number 类型,后续代码当字符串用就崩了。