豆瓣读书、电影和游戏插件
本博客使用的是Hexo-douban这块插件,由于插件主人工作繁忙,无心继续更新维护,也暴露出在使用过程中的问题,比如安装成功却无法爬取豆瓣数据等情况,下面将记录一下安装步骤和踩坑解决方案。
安装命令
1 | $ cnpm install hexo-douban --save |
升级
1 | npm install hexo-douban --update --save |
配置
将下面的配置写入站点的全局配置文件 _config.yml 里(不是主题的配置文件).
1 | douban: |
- user: 你的豆瓣ID.打开豆瓣,登入账户,然后在右上角点击 “个人主页” ,这时候地址栏的URL大概是这样:”https://www.douban.com/people/xxxxxx/" ,其中的”xxxxxx”就是你的个人ID了。
- builtin: 是否将生成页面的功能嵌入hexo s和hexo g中,默认是false,另一可选项为true(1.x.x版本新增配置项,建议开启)。
- title: 该页面的标题.
- quote: 写在页面开头的一段话,支持html语法.
- timeout: 爬取数据的超时时间,默认是 10000ms ,如果在使用时发现报了超时的错(ETIMEOUT)可以把这个数据设置的大一点。
如果只想显示某一个页面(比如movie),那就把其他的配置项注释掉即可。另外需注意douban:前面必须要顶格才行,有时候复制粘贴会多出空格,导致没有产生相关的页面。
启用使用
在0.x.x版本中,文章的更新和豆瓣页面的爬取操作是绑定在一起的,无法支持单独更新文章或者单独爬取文章。
在1.x.x版本中,使用hexo douban命令即可生成指定页面,如果不加参数,那么默认参数为-bgm。
1.x.x版本
需要注意的是,通常大家都喜欢用hexo d来作为hexo deploy命令的简化,但是当安装了hexo douban之后,就不能用hexo d了,因为hexo douban跟hexo deploy的前缀都是hexo d。
1 | $ hexo douban -h |
当配置了builtin参数为true,那么除了可以使用hexo douban命令生成之外,hexo g或hexo s也内嵌了生成页面的功能。builtin设置为true时,可直接使用命令 hexo g
即在生成静态页面前爬取豆瓣数据,不需要先执行 hexo douban。
0.x.x版本
直接使用命令hexo g即在生成静态页面前爬取豆瓣数据,如果使用hexo s则会监听文件变动,每有一次变动就会重新爬取数据。
生成页面命令
在GitBash下输入命令:
1 | hexo clean #清除之前生成的文件 |
注:由于
hexo douban
的简写也是hexo d,与hexo deploy的简写指令hexo d冲突,因此在进行二者部署的时候,只能都打全名而不能打简写形式
显示测试
如果上面的配置和操作都没问题,我们只需要在站点目录下测试http://localhost:4000/books 或者 http://localhost:4000/movies等,如果看到页面了就说明成功了。
菜单配置
如果上述都没有问题,我们就可以在菜单栏中添加按钮了,打开主题配置文件 _config.xml
,找到菜单按钮,可以选择性的添加下面内容:
1 | menu: |
遇到问题及解决方案
问题:userid设置完成,但是hexo g 爬取不到豆瓣数据,代码如下:
1 | 0 books have been loaded in 3066 ms, because you are offline or your network is bad |
解决方案:
由于使用的node.js是15版本的,而Hexo-douban插件不支持,可能是兼容性问题,可尝试使用别的nodejs版本,建议安装 v12.18.0
版本可解决。
Win10使用nvm进行node版本管理
因为兼容性原因,需要降低node版本。可以选择直接卸载现有版本,重新安装其他版本,但是考虑可拓展性,还是准备装一下nvm。
nvm简介
nvm是Linux下常用的一个node.js多版本管理工具,但是nvm不能在Windows下使用,在GitHub上有个项目叫 nvm-windows
,可以让我们在Windows下对node.js进行多版本管理。
下载nvm安装包
下载GitHub提供的nvm-windows
下载可执行安装包:nvm-setup.zip,解压,直接安装即可。
在安装nvm-windows前,由于已经安装过node,需要先卸载,并且要把目录清理干净。
完全卸载已安装的node.js
- 从卸载程序卸载程序node.js,也可以直接右键node.js的安装包并选择卸载。
- 从下列的目录中找到相关的内容并删除掉:
C:\Program Files (x86)\nodejs
C:\Program Files\nodejs
C:\Users\{User}\AppData\Roaming\npm
(或%appdata%\npm
)C:\Users\{User}\AppData\Roaming\npm-cache
(或%appdata%\npm-cache
)
- 检查电脑环境变量,将配置过的node.js和npm路径删除掉。
- 重启电脑。
安装nvm
将下载的文件解压后得到nvm-setup.exe,安装直接点下一步即可,有两个界面需要注意:
- Select Destination Location/设置nvm路径
安装完成后有个setting.txt文件,此路径相当于该文件中的root。注意
:路径不支持空格,不能设为类似”C:Program Files”这种,否则node无法使用,建议设置为:D:softwarenvm - Set Node.js Symlink/设置node.js映射路径
此路径相当于setting.txt文件中的path,该路径会与使用的node版本一一对应 ,根据nvm使用的版本,对应不同的node目录,从而实现node版本切换。注意
:
此路径同样不支持空格,不能设为类似”C:Program Files”这种,否则当你nvm use node版本时会出现如下:
1 | $ nvm use 12.18.0 |
也不能将目录设置成nvm安装路径的上一级,比如: D:software,否则明明提示成功用nvm安装了node,但是当你查看node版本时会出现:’node’ 不是内部或外部命令,也不是可运行的程序,建议设置为:D:softwarenodejs
NVM_HOME D:softwarenvm
NVM_SYMLINK D:softwarenodejs
查看nvm版本,出现如下,表示nvm安装成功
1 | $ nvm -v |
使用nvm安装node
设置node与npm下载源
nvm node_mirror https://npm.taobao.org/mirrors/node/
nvm npm_mirror https://npm.taobao.org/mirrors/npm/
设置完下载源后,会发现settings.txt 文件里的path不见了,不用管他
此时setting.txt文件如下:
root: D:softwarenvm
arch: 64
proxy: none
originalpath: .
originalversion:
node_mirror: https://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/
安装node版本
以我安装node 12.18.0版本为例:
1.安装指定node版本
1 | $ nvm install 12.18.0 64-bit |
2.查看已安装的node版本
1 | $ nvm list |
3.使用某个node版本
1 | $ nvm use 12.18.0 |
如上3步后,键入node和npm命令,就可以查看到当前的node和npm版本了。
4.查看node版本
1 | $ node -v |
5.查看npm版本
1 | $ npm -v |
nvm常用命令
1 | nvm list available //查看可安装的nodejs版本 |
Win11使用NVM版本管理工具
注意: 在安装nvm之前,必须确保nodejs和npm均已卸载干净!
打开控制面板选择程序卸载,该操作是卸载nodejs在系统的注册表等信息,卸载完成后,手动删除nodejs相关的目录文件,手动删除之前在系统环境变量和用户环境变量配置的路径,然后重启电脑。
您可以使用以下方法来查看 Node.js 是否已经卸载干净:
- 在命令提示符或 PowerShell 中,输入以下命令:
1 | where node |
如果输出为空,则 Node.js 已经卸载干净。
下载nvm安装包
下载GitHub提供的nvm-windows ,选择nvm-setup.exe下载,双击打开进行直接安装。
自定义nvm安装位置和自定义nodejs安装位置时一定要改成 非C盘且无空格
的目录文件夹,比如我安装位置D:\software\nvm和D:\software\nodejs;否则默认安装在 Program Files
这种带有空格的文件夹,可能会导致路径识别失败。
安装好之后使用nvm -v命令查看当前安装版本:
1 | PS C:\Users\潘永康> nvm -v |
列出当前安装的Node版本
1 | nvm ls |
列出所有可用的Node.js版本
1 | nvm list available |
安装特定版本
1 | nvm install 12.18.0 |
切换使用版本
1 | nvm use 12.18.0 |
配置全局淘宝镜像
找到D:\software\nvm目录下的setting.txt文件,添加如下两行代码:
1 | node_mirror: https://npmmirror.com/mirrors/node/ |
在 setting.txt
文件设置 node_mirror
和 npm_mirror
变量,会设置默认的 Node.js 和 npm 镜像源。
node_mirror
变量设置 Node.js 包的镜像源,npm_mirror
变量设置 npm 包的镜像源。
执行命令 npm config set registry https://registry.npm.taobao.org
,会设置全局的 npm 包镜像源。
两者的区别在于:
setting.txt
文件中的设置是全局的,适用于所有 Node.js 和 npm 命令。- 命令
npm config set registry https://registry.npm.taobao.org
的设置仅适用于当前会话。
因此,如果您希望所有 Node.js 和 npm 命令都使用淘宝镜像源,则建议在 setting.txt
文件中设置 node_mirror
和 npm_mirror
变量。
如果您只希望当前会话使用淘宝镜像源,则可以执行命令:
1 | npm config set registry https://registry.npm.taobao.org |
查看当前的 npm 包镜像源:
1 | npm config get registry |
node环境变量配置修改
查看全局安装的模块的根目录:
1 | npm root -g |
如发现还是默认在Program Files带有空格的文件夹,则需要在node.js的安装目录下新建两个文件夹node_global和node_cache。创建完 node_global
和 node_cache
文件夹后,需要使用 npm config set
命令来更改路径。
更改全局模块路径命令:
1 | npm config set prefix D:\software\nodejs\node_global |
更改缓存路径命令:
1 | npm config set cache D:\software\nodejs\node_cache |
更改路径后,需要重新启动计算机才能使更改生效。
可以使用 npm config list
命令来查看当前的配置是否已修改。
清除 npm 缓存: 清除 npm 缓存并重新安装 cnpm:
1 | npm cache clean --force |
问题一:
1 | PS C:\Users\潘永康> npm install -g cnpm |
这个错误表示当前的 Node.js 版本(12.18.0)和 npm 版本(6.14.4)不支持 cnpm 9.4.0 的安装要求。cnpm 9.4.0 需要 Node.js 版本 14.18.0 或更高版本。
解决办法,安装其他7以上的cnpm版本,支持 Node.js 12.x 版本。
1 | npm install -g cnpm@7 |
安装之后,使用命令进行查看:
1 | PS E:\MyBlog\blog\Hexo> node -v |
执行删除node_modules文件夹命令报错:
1 | PS E:\MyBlog\blog\Hexo> rm -rf node_modules |
可使用如下命令进行删除:
1 | Remove-Item node_modules -Force |
这将强制删除 node_modules
目录,即使目录不为空。
安装指定版本的Hexo:
1 | npm install -g hexo@4.2.0 |
问题:淘宝镜像安装时报错已过期。
1 | npm ERR! request to https://registry.npm.taobao.org/hexo failed, reason: certificate has expired |
可以使用其他国内镜像,例如:
1 | npm config set registry https://npmmirror.com |
问题:执行hexo s 访问http://localhost:4000 浏览器报错:
1 | Cannot GET / |
原因和解决办法:需要重新npm i下载安装依赖,否则执行hexo g 命令时,md文章配置有误也不报错,相关的index.html、js和xml文件也无法生成。