We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
最近我升级了博客中 Artalk 版本到 2.7.2,出现了死循环的问题,从而导致 Artalk 无法正常显示 (Issue 1),如下:
但是这个问题已经在 #717 中修复,我尝试修改 node_modules 写入该补丁。然后我发现无法正常显示的问题被修复了,却出现了另一个问题,Artalk 请求的 API 变成了当前的 domain (Issue 2)。
npm install && npm run dev
node_modules/artalk/dist/Artalk.es.js#4336
const conf = mergeDeep(defaults, customConf);
const conf = mergeDeep({ ...defaults }, customConf);
npm run dev
死循环会导致调用 Context.updateConf 失败,而 Artalk 在 conf-remoter.ts#L26 调用了该方法,失败后转到 conf-remoter.ts#28,此时会再次失败进入 conf-remoter.ts#L53,此后不再更新 UI,导致显示空白。
在 Artalk 初始化过程中会多次调用 Context.updateConf,当首次进入时 this.conf 是自定义的配置,而 nConf 仅包含需要更新的配置,如下(请关注 server 和 site 字段):
this.conf
nConf
server
site
之后进入了 handelCustomConf 方法,由于 nConf 并不包含 server 和 site 字段,因此在 mergeDeep 之后会被默认的配置覆盖,如下:
handelCustomConf
mergeDeep
在出了 handelCustomConf 方法后,mergeDeep 会将 this.conf 中的 server 和 site 字段设置成默认配置,如下:
合并默认配置的流程在 new Artalk(config) 处理一次即可,在处理一次之后 Artalk 中维护的配置已经是完整的,因此后续更新的时候可以去掉合并默认配置的流程。
new Artalk(config)
另外 #717 的修复并不完整,由于默认配置中包含了嵌套的对象,展开语法是浅拷贝,因此默认值中的嵌套对象可能被新的配置覆盖。
The text was updated successfully, but these errors were encountered:
感谢仔细检查!!(´இ皿இ`)
Sorry, something went wrong.
Successfully merging a pull request may close this issue.
Description
最近我升级了博客中 Artalk 版本到 2.7.2,出现了死循环的问题,从而导致 Artalk 无法正常显示 (Issue 1),如下:
但是这个问题已经在 #717 中修复,我尝试修改 node_modules 写入该补丁。然后我发现无法正常显示的问题被修复了,却出现了另一个问题,Artalk 请求的 API 变成了当前的 domain (Issue 2)。
Reproduction steps
Issue 1
npm install && npm run dev
Issue 2
node_modules/artalk/dist/Artalk.es.js#4336
行,将const conf = mergeDeep(defaults, customConf);
改成const conf = mergeDeep({ ...defaults }, customConf);
npm run dev
Tracks
Issue 1
死循环会导致调用 Context.updateConf 失败,而 Artalk 在 conf-remoter.ts#L26 调用了该方法,失败后转到 conf-remoter.ts#28,此时会再次失败进入 conf-remoter.ts#L53,此后不再更新 UI,导致显示空白。
Issue 2
在 Artalk 初始化过程中会多次调用 Context.updateConf,当首次进入时
this.conf
是自定义的配置,而nConf
仅包含需要更新的配置,如下(请关注server
和site
字段):之后进入了
handelCustomConf
方法,由于nConf
并不包含server
和site
字段,因此在mergeDeep
之后会被默认的配置覆盖,如下:在出了
handelCustomConf
方法后,mergeDeep
会将this.conf
中的server
和site
字段设置成默认配置,如下:Versions
Possible solutions
合并默认配置的流程在
new Artalk(config)
处理一次即可,在处理一次之后 Artalk 中维护的配置已经是完整的,因此后续更新的时候可以去掉合并默认配置的流程。另外 #717 的修复并不完整,由于默认配置中包含了嵌套的对象,展开语法是浅拷贝,因此默认值中的嵌套对象可能被新的配置覆盖。
The text was updated successfully, but these errors were encountered: