Last Updated:
我需要检查 writeBackId
函数被调用的条件,以及调试为什么ID没有被写回。让我先查看主逻辑中何时调用这个函数。
搜索 writeBackId
(**/publish.js
)、4 结果的文本
我发现问题了!在第355-357行,writeBackId
只在 !data.id
条件下被调用。但是你的Markdown文件有 id:
这一行(虽然是空的),所以 data.id
可能不是 undefined
,而是空字符串,导致条件判断失败。
让我检查一下 data.id
的处理逻辑:
问题找到了!当你的 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
和写回逻辑的调试信息。这样我就能确定问题所在并修复它。
另外,也可能是你的文章被识别为”更新”而不是”创建”,那样的话就不会触发写回逻辑。调试输出会告诉我们是创建还是更新。
已进行更改。