hexo报错TypeError: Cannot read property 'count' of undefined

情景再现

使用“hexo s”启动本地服务器时,项目报错,具体如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
D:\blog>hexo s
INFO Validating config
INFO Start processing
FATAL {
err: TypeError: Cannot read property 'count' of undefined
at Hexo.module.exports (D:\blog\node_modules\_hexo-baidu-url-submit@0.0.6@hexo-baidu-url-submit\lib\generator.js:4:41)
at Hexo.tryCatcher (D:\blog\node_modules\bluebird\js\release\util.js:16:23)
at Hexo.<anonymous> (D:\blog\node_modules\bluebird\js\release\method.js:15:34)
at D:\blog\node_modules\hexo\lib\hexo\index.js:405:22
at tryCatcher (D:\blog\node_modules\bluebird\js\release\util.js:16:23)
at MappingPromiseArray._promiseFulfilled (D:\blog\node_modules\bluebird\js\release\map.js:68:38)
at MappingPromiseArray.PromiseArray._iterate (D:\blog\node_modules\bluebird\js\release\promise_array.js:115:31)
at MappingPromiseArray.init (D:\blog\node_modules\bluebird\js\release\promise_array.js:79:10)
at MappingPromiseArray._asyncInit (D:\blog\node_modules\bluebird\js\release\map.js:37:10)
at _drainQueueStep (D:\blog\node_modules\bluebird\js\release\async.js:97:12)
at _drainQueue (D:\blog\node_modules\bluebird\js\release\async.js:86:9)
at Async._drainQueues (D:\blog\node_modules\bluebird\js\release\async.js:102:5)
at Immediate.Async.drainQueues [as _onImmediate] (D:\blog\node_modules\bluebird\js\release\async.js:15:14)
at processImmediate (internal/timers.js:461:21)
} Something's wrong. Maybe you can find the solution here: %s https://hexo.io/docs/troubleshooting.html

而在这之前,我安装了hexo-baidu-url-submit插件。

处理

从报错日志中我们可以看到是由于hexo-baidu-url-submit插件导致的,查看官方文档( https://github.com/huiwang/hexo-baidu-url-submit )发现是由于没有在站点配置文件配置baidu-url-submit配置项导致。
这里介绍两种处理方式:

1.补全相关配置信息

  • 注册百度站长( https://ziyuan.baidu.com/ )(需要有自己的域名),获取相关token等必要信息。
  • 将baidu-url-submit配置项添加至站点配置文件中。
    1
    2
    3
    4
    5
    6
    #设置百度主动推送
    baidu_url_submit:
    count: 200 #比如200,代表提交最新的200个链接
    host: www.baidu.com # 在百度站长平台中注册的域名,这个改为你自己的域名
    token: your_token # 请注意这是您的秘钥, 所以请不要把博客源代码发布在公众仓库里!
    path: baidu_urls.txt # 文本文档的地址, 新链接会保存在此文本文档里,这个默认
  • 此外,还需要在站点配置文件中加入新的 deploy 配置项:
    1
    2
    3
    4
    5
    6
    deploy:
    - type: git
    repo: 【GitHub项目地址】
    branch: main
    - type: baidu_url_submitter

    2.放弃百度主动推送功能,卸载该插件即可。

    1
    2
    3
    npm remove hexo-baidu-url-submit
    hexo clean
    hexo g

由于没有域名,我选择了后者,放弃了百度主动推送功能。第一种处理方式是从他人博客参考获取,可行性仍有待进一步验证。

参考链接

  1. https://blog.csdn.net/nineya_com/article/details/103445898
  2. https://blog.yirenliu.cn/posts/42821/#%E7%99%BE%E5%BA%A6%E4%B8%BB%E5%8A%A8%E6%8E%A8%E9%80%81%E7%9A%84%E4%BD%9C%E7%94%A8