# 迁移后某些图标未显示

**URL:** https://meta.discourse.org/t/some-icons-do-not-appear-after-migration/188297
**Category:** Support
**Created:** [2021年四月27日 19:04 UTC](https://meta.discourse.org/t/some-icons-do-not-appear-after-migration/188297 "2021-04-27T19:04:49Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![romanhruska](https://avatars.discourse-cdn.com/v4/letter/r/e36b37/32.png) [@romanhruska](https://meta.discourse.org/u/romanhruska)
#### Post date: [2021年四月27日 19:04 UTC](https://meta.discourse.org/t/some-icons-do-not-appear-after-migration/188297/1 "2021-04-27T19:04:49Z")

</div>

各位好，

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

大多数图标（那些可以点击的图标）都消失了，就像这样：

 ![obrazek](https://global.discourse-cdn.com/meta/original/3X/b/b/bbe37d762f85bc207cae7741a711b347f64acd31.png)

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

您可以在这里自行查看：[https://community.robotict.com](https://community.robotict.com)

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

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

```plaintext
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

```

🙏 提前感谢您的帮助，致以亲切的问候 ❤  
Roman

---

<div class="post-metadata">

### Author: ![pmusaraj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pmusaraj/32/119489_2.png) [@pmusaraj](https://meta.discourse.org/u/pmusaraj)
#### Post date: [2021年四月27日 19:26 UTC](https://meta.discourse.org/t/some-icons-do-not-appear-after-migration/188297/2 "2021-04-27T19:26:56Z")

</div>

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

> [@romanhruska](#):
>
> 自定义 CSS 编辑器无法工作

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

---

<div class="post-metadata">

### Author: ![romanhruska](https://avatars.discourse-cdn.com/v4/letter/r/e36b37/32.png) [@romanhruska](https://meta.discourse.org/u/romanhruska)
#### Post date: [2021年四月27日 19:33 UTC](https://meta.discourse.org/t/some-icons-do-not-appear-after-migration/188297/3 "2021-04-27T19:33:36Z")

</div>

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

---

<div class="post-metadata">

### Author: ![pmusaraj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pmusaraj/32/119489_2.png) [@pmusaraj](https://meta.discourse.org/u/pmusaraj)
#### Post date: [2021年四月27日 20:24 UTC](https://meta.discourse.org/t/some-icons-do-not-appear-after-migration/188297/4 "2021-04-27T20:24:25Z")

</div>

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

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

---

<div class="post-metadata">

### Author: ![romanhruska](https://avatars.discourse-cdn.com/v4/letter/r/e36b37/32.png) [@romanhruska](https://meta.discourse.org/u/romanhruska)
#### Post date: [2021年四月28日 06:12 UTC](https://meta.discourse.org/t/some-icons-do-not-appear-after-migration/188297/5 "2021-04-28T06:12:15Z")

</div>

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

- docker\_manager v0.1
- styleguide v0.2

---

<div class="post-metadata">

### Author: ![pmusaraj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pmusaraj/32/119489_2.png) [@pmusaraj](https://meta.discourse.org/u/pmusaraj)
#### Post date: [2021年四月28日 14:46 UTC](https://meta.discourse.org/t/some-icons-do-not-appear-after-migration/188297/6 "2021-04-28T14:46:23Z")

</div>

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

您的实例中的某个组件正在强制为 SVG 命名空间常量添加 `https` 前缀。当我检查 JS 代码时，核心代码中对应[这一行](https://github.com/discourse/discourse/blob/aa9a8d104117ccab9657d733c81c8de2c43e27e4/app/assets/javascripts/discourse-common/addon/lib/icon-library.js#L7) 的内容返回的是 `https://www.w3.org/2000/svg`，而正如您在核心代码中看到的，它本应是 `http://www.w3.org/2000/svg`。（我还在本地进行了测试，将该行修改为使用 https，完美复现了该问题。）

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

---

<div class="post-metadata">

### Author: ![romanhruska](https://avatars.discourse-cdn.com/v4/letter/r/e36b37/32.png) [@romanhruska](https://meta.discourse.org/u/romanhruska)
#### Post date: [2021年五月4日 08:49 UTC](https://meta.discourse.org/t/some-icons-do-not-appear-after-migration/188297/7 "2021-05-04T08:49:27Z")

</div>

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

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

再次感谢您的提示！

---

<div class="post-metadata">

### Author: ![pmusaraj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pmusaraj/32/119489_2.png) [@pmusaraj](https://meta.discourse.org/u/pmusaraj)
#### Post date: [2021年五月4日 14:10 UTC](https://meta.discourse.org/t/some-icons-do-not-appear-after-migration/188297/8 "2021-05-04T14:10:19Z")

</div>

太棒了！

> [@romanhruska](#):
>
> 我们仍在应对混合内容警告。一些图片（如图标或标志）在代码中是以 HTTP:// 开头的，而我们的服务器魔法似乎对它们不起作用。对此有什么建议吗？

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