博客使用 waline 评论系统

之前博客的评论系统只支持 Disqus 评论系统。但是这个评论系统在墙内无法使用。为了方便交流,琢磨着怎么也得用上一个不用梯子也能使用的评论系统。又是一番搜索折腾最后还是决定使用 waline

版本

本文使用的版本:

  • Hexo v5.4.0
  • NexT v8.8.2

安装配置 walineVercel

安装配置参考了这篇文章:Hexo使用Waline评论系统 。文章的中官方链接和指南都解释得比较详细,按照操作一步一步来即可。最后安装指示完全安装成功了。启动live服务器的时候出现错误。

1
Error: Unable to call `next_data`, which is undefined or falsey

完整信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
11:11:56.718 DEBUG Generator: asset
11:11:56.760 INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop.
11:11:56.775 DEBUG Database saved
11:11:58.112 DEBUG Rendering HTML post: 2021/12/07/11google-adsense/index.html
Unhandled rejection Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk)
Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk) [Line 36, Column 25]
Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk) [Line 49, Column 17]
Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk)
Template render error: (/home/zhou/Projects/blog/themes/next/layout/_partials/head/head-unique.njk) [Line 20, Column 15]
Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk) [Line 3, Column 3]
Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk)
Template render error: (/home/zhou/Projects/blog/themes/next/layout/_partials/header/index.njk) [Line 6, Column 15]
Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk) [Line 5, Column 3]
Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk)
Template render error: (/home/zhou/Projects/blog/themes/next/layout/_partials/header/sub-menu.njk) [Line 2, Column 29]
Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk)
Template render error: (/home/zhou/Projects/blog/themes/next/layout/_partials/header/sub-menu.njk)
Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk) [Line 9, Column 12]
Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk)
Template render error: (/home/zhou/Projects/blog/themes/next/layout/_partials/comments.njk) [Line 51, Column 24]
Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk)
Template render error: (/home/zhou/Projects/blog/themes/next/layout/_partials/languages.njk)
Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk)
Template render error: (/home/zhou/Projects/blog/themes/next/layout/_third-party/math/index.njk)
Template render error: (/home/zhou/Projects/blog/themes/next/layout/post.njk)
Template render error: (/home/zhou/Projects/blog/themes/next/layout/_third-party/quicklink.njk)
Template render error: (/home/zhou/Projects/blog/themes/next/layout/inject/bodyEnd/waline.njk) [Line 5, Column 15]
Error: Unable to call `next_data`, which is undefined or falsey
at Object._prettifyError (/home/zhou/Projects/blog/node_modules/nunjucks/src/lib.js:36:11)
at /home/zhou/Projects/blog/node_modules/nunjucks/src/environment.js:561:19
at Template.root [as rootRenderFunc] (eval at _compile (/home/zhou/Projects/blog/node_modules/nunjucks/src/environment.js:631:18), <anonymous>:45:3)
at Template.render (/home/zhou/Projects/blog/node_modules/nunjucks/src/environment.js:550:10)
at /home/zhou/Projects/blog/node_modules/hexo/lib/plugins/renderer/nunjucks.js:67:37
at _View._compiled (/home/zhou/Projects/blog/node_modules/hexo/lib/theme/view.js:136:50)
at _View.render (/home/zhou/Projects/blog/node_modules/hexo/lib/theme/view.js:39:17)
at /home/zhou/Projects/blog/node_modules/hexo/lib/hexo/index.js:64:21
at tryCatcher (/home/zhou/Projects/blog/node_modules/bluebird/js/release/util.js:16:23)
at /home/zhou/Projects/blog/node_modules/bluebird/js/release/method.js:15:34
at RouteStream._read (/home/zhou/Projects/blog/node_modules/hexo/lib/hexo/router.js:47:5)
at RouteStream.Readable.read (internal/streams/readable.js:465:10)
at resume_ (internal/streams/readable.js:963:12)
at processTicksAndRejections (internal/process/task_queues.js:82:21)

升级 NexT v8.2.1 -> v8.8.2

上面链接的博文中也提到同样的问题,后来通过升级解决。我就直接升级到最新的版本。关于怎么升级,官方有推荐的升级指南(Upgrade)。
官方的文档提示升级之前备份配置文件 _config.yml 以及自定义的其他文件。我的这些文件反也是单独保存在别的文件夹中,通过链接的方式链接到NexT的配置中。直接用git:

1
git pull && git checkout v8.8.2

然后重新链接_config.yml。这个问题算是解决了。

继续运行live结果这次出现了另外一个问题:

1
TypeError: Cannot read property 'color' of undefined

完整信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
10:16:48.303 FATAL {
err: TypeError: Cannot read property 'color' of undefined
at module.exports (/home/zhou/Projects/blog/themes/next/scripts/events/lib/vendors.js:34:41)
at Hexo.<anonymous> (/home/zhou/Projects/blog/themes/next/scripts/events/index.js:9:27)
at Hexo.tryCatcher (/home/zhou/Projects/blog/node_modules/bluebird/js/release/util.js:16:23)
at Hexo.<anonymous> (/home/zhou/Projects/blog/node_modules/bluebird/js/release/method.js:15:34)
at /home/zhou/Projects/blog/node_modules/hexo/lib/extend/filter.js:67:52
at tryCatcher (/home/zhou/Projects/blog/node_modules/bluebird/js/release/util.js:16:23)
at Object.gotValue (/home/zhou/Projects/blog/node_modules/bluebird/js/release/reduce.js:166:18)
at Object.gotAccum (/home/zhou/Projects/blog/node_modules/bluebird/js/release/reduce.js:155:25)
at Object.tryCatcher (/home/zhou/Projects/blog/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/home/zhou/Projects/blog/node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (/home/zhou/Projects/blog/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromiseCtx (/home/zhou/Projects/blog/node_modules/bluebird/js/release/promise.js:641:10)
at _drainQueueStep (/home/zhou/Projects/blog/node_modules/bluebird/js/release/async.js:97:12)
at _drainQueue (/home/zhou/Projects/blog/node_modules/bluebird/js/release/async.js:86:9)
at Async._drainQueues (/home/zhou/Projects/blog/node_modules/bluebird/js/release/async.js:102:5)
at Immediate.Async.drainQueues [as _onImmediate] (/home/zhou/Projects/blog/node_modules/bluebird/js/release/async.js:15:14)
at processImmediate (internal/timers.js:464:21)
} Something's wrong. Maybe you can find the solution here: %s https://hexo.io/docs/troubleshooting.html

设置进度条color属性

根据上面的错误提示,一个叫 color 属性为空导致。对比了默认的配置文件和我自己的默认文件之后,发现我的配置文件 _config.yml 中没有 pace 字段,当然也不会有下面的属性 color 了。
这个 pace 是用来显示页面加载的动画和进度的,我暂时是没有用到。直接把这块的配置复制过来,不启用就可以了。

完整这步之后就再也没有其他的问题了。

1
2
3
4
5
6
7
8
9
pace:
enable: false
# All available colors:
# black | blue | green | orange | pink | purple | red | silver | white | yellow
color: blue
# All available themes:
# big-counter | bounce | barber-shop | center-atom | center-circle | center-radar | center-simple
# corner-indicator | fill-left | flat-top | flash | loading-bar | mac-osx | material | minimal
theme: minimal