创建文章失败的原因

文章 ID: 381
分类: 随记
标签: ,
最后更新:
Last Updated:

我需要检查 writeBackId 函数被调用的条件,以及调试为什么ID没有被写回。让我先查看主逻辑中何时调用这个函数。

搜索 writeBackId (**/publish.js)、4 结果的文本

读取 ,行 350 到 363

我发现问题了!在第355-357行,writeBackId 只在 !data.id 条件下被调用。但是你的Markdown文件有 id: 这一行(虽然是空的),所以 data.id 可能不是 undefined,而是空字符串,导致条件判断失败。

让我检查一下 data.id 的处理逻辑:

读取 ,行 270 到 290

读取 ,行 290 到 310

问题找到了!当你的 Markdown 有 id: 空行时,YAML 解析器会将其解析为空字符串,所以 data.id 存在但为空字符串。但是在第355行的条件判断中:

if (!data.id && result.id) {

空字符串 "" 在 JavaScript 中被视为 falsy,所以 !data.id 会是 true,理论上应该会调用 writeBackId

让我添加调试输出来看看到底发生了什么:

正在使用 “替换文件中的字符串”

现在请你用调试模式重新发布一次文章,这样我们可以看到具体的调试信息:

$env:DEBUG_PUBLISH=1; node publish.js posts\aaa.md.md

请把完整的输出贴给我,特别是关于 data.id 和写回逻辑的调试信息。这样我就能确定问题所在并修复它。

另外,也可能是你的文章被识别为”更新”而不是”创建”,那样的话就不会触发写回逻辑。调试输出会告诉我们是创建还是更新。

已进行更改。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部