# 使用 Discourse 的 安全模式（Safe Mode） 来对主题和插件进行调试

**URL:** <https://www.isharkfly.com/t/discourse-safe-mode/16090>\
**Category:** Discourse\
**Tags:** discourse\
**Created:** [August 5, 2024, 4:51pm UTC](https://www.isharkfly.com/t/discourse-safe-mode/16090 "2024-08-05T16:51:48Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [August 5, 2024, 4:51pm UTC](https://www.isharkfly.com/t/discourse-safe-mode/16090/1 "2024-08-05T16:51:48Z")

</div>

> 🔖 这个指南主要对如何使用 Discourse 的 安全模式（Safe Mode）来对主题和插件的问题进行调试进行说明。
> 
> 🙋 需要的用户级别: 所有用户  
> 本主题的内容复制于官方的主题：[Using Safe Mode to troubleshoot issues with themes and plugins - Site Management - Discourse Meta](https://meta.discourse.org/t/using-safe-mode-to-troubleshoot-issues-with-themes-and-plugins/53504)

Discourse 提供了一个成为 JavaScript 安全模式 “JavaScript Safe Mode” 的功能，这个功能允许用户能够让用户对插件或者主题体提供的 JavaScript 导致的错误进行隔离。

这个功能对你的 Discourse 安装实例出现问题的时候尤其有用。我们可以通过这个功能来确定出现的问题是因为 Discourse 自身的问题还是因为安装的插件导致的。

## 进入安装模式

要进入安全模式，可以通过下面的 3 个步骤来进行：

1. 打开一个新的浏览器标签页

2. 在浏览器中输入你的站点名称，然后再站点名称的后面添加 safe-mode。例如，你的站点域名为： `http://discourse.example.com`，那么进入安装模式的域名为：

3. 单击 ‘进入安全模式（Enter Safe Mode）’ 按钮：

 ![](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/2X/0/039dd9279bc392cf8fb979eedf69c25b45338a8b.png)

## 安全模式选项

当进入安全模式后，你可以有下面的一些选项：

- 禁用所有主题和主题组件（Disable all themes and theme components）
- 禁用所有非官方插件（Disable unofficial plugins）
- 禁用所有插件（Disable all plugins）

在默认的情况下，上面 3 个选项都会被同时选择。

但是，你可以通过多次进入安全模式，并且选择不同的选项来隔离可能出现的问题，并对你的 Discourse 安装实例进行调试。

## 使用安全模式

1. 选择进入安全模式页面
2. 单击 “进入安全模式（Enter Safe Mode）” 来应用你的选项。
3. 你可以通过页面的头部来看到你当前访问页面是在安全模式下进行显示。
4. 在安全模式下对网站进行浏览来确定是不是有同样的问题。通过这个方式可以确定导致问题是因为安装的插件还是 Discourse 的问题。

## 退出安全模式

退出安全模式也很简单，只需要关闭标签页即可。

## 重要说明

需要注意的是，当你希望进入安全模式，或者把你的站点的安全模分享给其他用户的时候，需要确定在新的标签页或者新的浏览器中进行打开。

如果在当前标签页中打开的话，可能会导致无法进行安全模式。

> ⚠ 安全模式只会对插件使用的 JavaScript 进行隔离和屏蔽。如果你希望对全站使用插件进行禁用的话，你需要从安装配置文件中删除插件的配置，并且对全站进行重构。

## 问题解决

如果你没有办法进入安全模式，可以尝试使用下面提供的链接地址，下面的链接地址中将会跳过插件选择对话框而直接进入特定的安全模式：

```auto
https://discourse.example.com/?safe_mode=no_themes,no_plugins

```

例如进行安全模式： [https://try.discourse.org/?safe\_mode=no\_themes,no\_plugins](https://try.discourse.org/?safe_mode=no_themes,no_plugins)

> ℹ 针对 Discourse 安装实例版本小于等于 2.9.0.beta8 ，要进入安全模式的，请使用`?safe_mode=no_custom,no_plugins` ，这是因为参数的不一样。

通过对主题或者其他有关网站内容的查看，可以通过 URL 的链接中看到，所有的链接都会在后面添加上 `?safe_mode=no_themes%2Cno_plugins` 后缀作为参数。

 ![2024-08-05_15-47-38](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/2X/6/60f18fa0ffcf2b4cd8a74a7d66d1f22ce59b344f.png)

这就是 Discourse 安全模式的处理方式，通过 URL 的参数来禁用 JavaScript 脚本的载入。
