迁移后某些图标未显示

各位好,

一、 我想报告 Discourse 的一个奇怪行为。我们使用的是 2.7.0.beta7 版本,最近我们从内部网络迁移(更准确地说是链接)到了公共互联网。我们遇到了一个奇怪的问题。

大多数图标(那些可以点击的图标)都消失了,就像这样:

但有些图标却正常工作。我尝试调查,但找不到任何规律,或者是我没看出来。

您可以在这里自行查看:https://community.robotict.com

如果您能分享任何想法,我将非常高兴。

二、 另外(但这可能不是相关问题)——自定义 CSS 编辑器无法工作。我能看到我过去添加的 CSS 内容显示半秒钟,然后它就消失了。控制台显示 ace.js 存在问题:

Uncaught TypeError: this.element.style is undefined
    i ace.js:1
    a ace.js:1
    y ace.js:1
    edit ace.js:1
    didInsertElement _admin-58c216d6bb14f7ee8451b6ef94ece0c6ea56c69b044ed8f4eea7934ec2ca3df8.js:315
    n ace.js:1
    a ace.js:1
    didInsertElement _admin-58c216d6bb14f7ee8451b6ef94ece0c6ea56c69b044ed8f4eea7934ec2ca3df8.js:303
    jQuery 10
    onreadystatechange _application-860b04b192b4dea3c5cb7e8d5e3d423bcf05a15ff2f4d8faf26a5d550ab169d2.js:10090
    c _application-860b04b192b4dea3c5cb7e8d5e3d423bcf05a15ff2f4d8faf26a5d550ab169d2.js:10083
    c _application-860b04b192b4dea3c5cb7e8d5e3d423bcf05a15ff2f4d8faf26a5d550ab169d2.js:10168
    jQuery 2
    c _application-860b04b192b4dea3c5cb7e8d5e3d423bcf05a15ff2f4d8faf26a5d550ab169d2.js:10130
    didInsertElement _admin-58c216d6bb14f7ee8451b6ef94ece0c6ea56c69b044ed8f4eea7934ec2ca3df8.js:302
    jQuery 26
ace.js:1:247491

:folded_hands: 提前感谢您的帮助,致以亲切的问候 :heart:
Roman

那个上方缺少图标的按钮原本应该实现什么功能?它看起来可能是一个插件或主题组件添加的,也许该组件未能正确注册图标?

这也可能是插件导致的问题。一种排查方法是访问 /safe-mode,禁用所有插件和主题,然后查看编辑 CSS 是否恢复正常。如果此时可以正常工作,则问题出在某个插件上。

有一个扳手图标(主题操作)。另外,正如您在截图中(无法)看到的那样,在“回复”文本左侧,您通常应该看到心形、链条、笔、书签等图标。
我会根据您的建议进行检查。
更新:已在安全模式下尝试,但没有任何变化:frowning:

嗯,是的,这有点奇怪。你能分享一下你的网站上使用了哪些插件吗?

更新:这是一个非常奇怪的问题,它持续影响应用中某些地方的图标,但其他地方却没有。也许可以尝试重新部署?

是的,这确实很奇怪。
我们只使用了这两个插件:

  • docker_manager v0.1
  • styleguide v0.2

好的 @romanhruska,我想我找到了一个可能的解释。

您的实例中的某个组件正在强制为 SVG 命名空间常量添加 https 前缀。当我检查 JS 代码时,核心代码中对应这一行 的内容返回的是 https://www.w3.org/2000/svg,而正如您在核心代码中看到的,它本应是 http://www.w3.org/2000/svg。(我还在本地进行了测试,将该行修改为使用 https,完美复现了该问题。)

您是否有执行此操作的补丁?如果没有,您的服务器是否执行了某种魔法操作,确保 JS 中的所有 http 字符串都被转换为 https

砰!
您完全正确,这就是问题所在。现在服务器团队已经调整了设置,图标和编辑器都能正常工作了!非常感谢您!!!

我们仍在解决混合内容警告的问题。有些图片(如图标或徽标)在代码中是以 HTTP:// 开头的,而我们的服务器魔法似乎对它们不起作用。对此有什么建议吗?

再次感谢您的提示!

太棒了!

您的网站之前是在内部使用 HTTP,后来才迁移到 HTTPS 吗?您可能需要确保 SiteSetting.force_https 返回 true。如果是这种情况,您可能需要重新生成帖子。在命令行中,您需要运行 bundle exec rake posts:rebake