1. 起因

https://imsun.github.io/gitment/dist/gitment.browser.js

向网址 https://gh-oauth.imsun.net 发送了验证请求,这个gh-oauth.imsun.net是作者自行搭建的,现在不在维护了。所以出现了问题。

那么修复过程就是:

  1. 自己建立这个服务器
  2. browser.js中引用这个网址的地方,改为自己的网址
  3. 主题中引用的browser.js,不能是原来gitment的js,而要是自己修改过的js

2. 修复步骤

2.1. 建立服务器

ssh上自己的服务器

1
2
3
4
5
6
1. 安装npm
2. 安装nginx
3. 安装git
4. git clone https://github.com/imsun/gh-oauth-server
5. cd gh-oauth-server
6. npm install

修改nginx文件,具体自行百度,即将自己的域名映射到本地3000端口,因为gh-oauth-server是绑定在3000端口上的。

当然,理论上可以直接用ip + 3000端口的方式访问到这个server,不需要nginx的,但是这样一来你的ip会暴露在browser.js中,十分的不安全。同时也不利于开启https。

2.2. 测试

1
2
3
cd gh-oauth-server
nohup npm start &
vi nohup.out

输出信息

1
2
3
4
> gh-oauth-server@0.0.1 start /home/pty/gitment-oauth-server/gh-oauth-server
> node server

gh-oauth-server listening on port 3000

则表示一切正常

2.3. 建立自己的gitment.browser.js

随便找某个node_modules,只要有gitment就行,最好是最新的。然后修改

1
..\node_modules\gitment\dist\gitment.browser.js

将其中的

1
2
3
4
5
6
7
8
9
10
11
_utils.http.post('https://gh-oauth.imsun.net', {
code: code,
client_id: client_id,
client_secret: client_secret
}, '').then(function (data) {
_this.accessToken = data.access_token;
_this.update();
}).catch(function (e) {
_this.state.user.isLoggingIn = false;
alert(e);
});

代码里引用的https://gh-oauth.imsun.net服务器地址,修改为刚才2.1步骤我们启动的服务器地址。

然后将修复后的文件存储在git上,或者oss,或者服务器上,要求能从外部访问。

3. tranquilpeak的gitment修复

这个主题相对于其他主题而言,可以自己修改代码后编译。但是编译过程中需要安装很多东西,步骤比较繁琐。

这里只指出步骤,在编译过程中出现的问题基本上google都有答案,一般就是MSbuild不对,比如少Net 2.5之类的。

下面为修复步骤:

1
2
3
1. cd tranquilpeak\layout\_partial
2. vi script.ejs
3. 将gc.src = '**'; 一行中的地址,替换为你自己修复过后的gitment.browser.js的地址。

运行自带的build-tranquilpeak.sh即可。

运行之后会生成新的tranquilpeak,是一个新文件夹,hexo-theme-tranquilpeak-built-for-production-1.11.0

在hexo的config.yml中引用这个新文件夹即可。