Discourse 已解决的插件抛出 500 错误

我最近升级了 Discourse 版本,所有插件也已更新至最新版本。
升级后,当我尝试将回复标记为解决方案时,出现了 500 错误。

以下是我在控制台中看到的错误详情:

    加载资源失败:服务器响应状态为 500 ()
_application-ed0ac69…88e883e0db.js:11141 SyntaxError: JSON 位置 0 处出现意外的 < 符号
    at Function.parse [as parseJSON] (<anonymous>)
    at n (_application-ed0ac69…88e883e0db.js:11137)
    at e.popupAjaxError (_application-ed0ac69…88e883e0db.js:11180)
    at E (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at w (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at g (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at t.invoke (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at e.t.flush (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at e.t.flush (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at e.t._end (ember_jquery-8e338e1…8f98e499a037a9.js:1)
ember_jquery-8e338e1…8f98e499a037a9.js:1 未捕获的
Object
jqXHR: {readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
textStatus: "error"
errorThrown: ""
_discourse_displayed: true
__proto__: Object
1 个赞

您是否安装了非官方插件?在仅启用官方插件和主题的安全模式下,问题是否仍然存在?

1 个赞

是的,我确实安装了非官方插件,而且我还没有在安全模式下检查过(我不知道该怎么做 :noobface:)

不过我查看了日志,显示如下错误:
ArgumentError (unknown keyword: duration) /var/www/discourse/app/models/topic.rb:1138:in 'set_or_create_timer'

(如果您感兴趣,这里是完整的回溯信息:https://pastebin.com/chKtDTeL。)

随后我进入已解决的设置,将自动关闭时间设置为 0 小时(之前的值是 72),现在问题已解决,但我真的很想使用这个功能。有什么建议吗?

1 个赞

只需访问您网站的 /safe-mode 即可进入安全模式设置。界面如下所示:

1 个赞

好的,我团队中已有人尝试过以下方法:
· 禁用非官方插件(例如我们的徽章插件)并未解决问题。
· 禁用我们的主题(例如自定义 JavaScript)并未解决问题。
· 同时禁用非官方插件和主题也未解决问题。
已使用安全模式。

没有尝试禁用所有插件,因为你知道那样做会直接禁用已解决的问题 :grin:

1 个赞

你们有 Pavilion 插件吗?

1 个赞

这似乎与我日志中发现的内容有关。插件作者最近一次更新是:

1 个赞

没有来自 pavilion 的插件

2 个赞

我刚将个人站点更新到最新版本并启用了 solved 插件,对我来说一切正常。我无法复现该问题。

2 个赞

我想我找到问题了。我们使用的是稳定版(而非默认的 tests-passed 版本),该版本尚未包含“duration”的变更。

1 个赞

感谢您对此进行跟进,我们非常感激!我们认为最好等到稳定分支更新后再使用此功能。

1 个赞

你好,我遇到了同样的问题:

Discourse 版本:

我的插件:

我已在安全模式下尝试过,问题依旧。

日志如下:
image

消息

ArgumentError (未知关键字: duration)
/var/www/discourse/app/models/topic.rb:1138:in `set_or_create_timer'

回溯

/var/www/discourse/app/models/topic.rb:1138:in `set_or_create_timer'
/var/www/discourse/plugins/discourse-solved/plugin.rb:126:in `accept_answer!'
/var/www/discourse/plugins/discourse-solved/plugin.rb:206:in `accept'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/abstract_controller/base.rb:196:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/rendering.rb:30:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:135:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/abstract_controller/callbacks.rb:41:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/rescue.rb:22:in `process_action'

感谢您的帮助。

大家好,
有时间聊聊一个想法吗?

您正在使用特定的 Discourse 版本,该版本可能尚未向后移植此功能。Solved 插件在最新的 tests-passed 分支上运行正常,建议升级至该分支。

1 个赞

为什么?
我使用的是不稳定版本。

所以,如果我没理解错的话,稳定版本并不适合用作 Discourse 生产服务器吗?

  ## 此容器应使用哪个 Git 修订版本?(默认值:tests-passed)
  version: stable

它不错,但通常非常老旧,缺乏新功能。你真的应该使用 tests-passed,因为它足够稳定,并且包含所有新功能和性能改进。

好的,感谢您的回复。

我昨天修复了一个问题。能否更新 discourse-solved 插件,并确认问题是否已为您解决?

4 个赞

你好 @kris.kotlarek
这个版本对我来说没问题:

谢谢

3 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.