尝试访问 /tags 时出现关键字冲突错误

当我尝试访问 https://discourse.threejs.org/tags 时,出现了一个错误:

不过,标签功能已启用并正常运行,我可以无障碍地访问单个标签页面,例如 https://discourse.threejs.org/tag/geometry

有人知道这是怎么回事吗?我是否不小心禁用了标签页面?

2 个赞

有哪些值得推荐的插件或扩展吗?

在标签页面(浏览器中)存在大量错误。

TypeError: o.setProperties 不是一个函数...

处理路由时出错:tags.index o.setProperties 不是一个函数 TypeError: o.setProperties 不是一个函数

即使在“安全模式”下,问题依然存在。

我在一分钟前更新了实例,目前没有任何错误。是否可能是某些扩展(插件)造成了干扰?

1 个赞

我们使用的是开源社区版,因此在插件方面受到较大限制。
插件页面如下所示:

我们还安装了一些主题和几个组件:

不过,我尝试禁用了组件并更新了主题,但没有任何变化。

@looeee

很遗憾得知你遇到了这个问题。

我访问了你的网站并快速查看了一下,发现控制台里有很多 JavaScript 错误;但我无法将这些控制台错误追溯到 Ember/JS 代码中的某一行。

为了确认这与 JavaScript 有关(这很容易做到),我将用户代理设置为 GoogleBot 后查看了你的网站(标签页面),结果可以正常访问该页面:

这是一个“碰运气”的尝试,“只是为了看看”,但它可能会为你提供一些线索。

考虑在管理员面板设置中暂时“禁用标签”:

Screen Shot 2020-08-15 at 5.28.30 PM

然后像往常一样导航到你的标签页面并刷新。你应该会看到标准的 Discourse 404 错误:

  • 哎呀!该页面不存在或为私密页面。

如果你在禁用线程标签后没有看到“哎呀!该页面不存在或为私密页面”的提示,那将会是个有趣的意外;但我猜你会看到。

接下来,回到管理员设置中重新启用你的线程标签,并再次刷新标签页面。

我猜你仍然会看到“出错了”的提示,但禁用和重新启用操作很简单,看看是否有新的或有趣的内容出现,这可能会成为线索。

希望这能帮到你。

1 个赞

你好 @looeee

你遇到了一个罕见的问题,这是由于你的某个标签 constructor 和一些 JS 代码引起的。

我将在周一提供修复方案。在此期间,如果情况紧急,你可以将 constructor 标签重命名为其他名称,或者直接删除它。/tags/constructor 应该仍然可以访问。


关于更详细且技术性的解释:在代码的某个地方,我们执行了类似以下的操作:

const obj = {};
obj['constructor']

结果并没有返回 undefined,而是返回了该对象的构造函数方法 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor,这显然超出了我们代码的预期 :sweat_smile:

6 个赞

哎呀!哈哈,不能说我以前没做过类似的事。谢谢你帮我深入调查这个问题。

无论如何,看起来“constructor”是个拼写错误,原本应该是“construction”。由于只有一篇帖子涉及这个问题,我已经将其删除,果然/tags 页面又恢复正常了。

感谢你的快速帮助,非常感谢 :slight_smile:

编辑:既然我现在又能访问标签了,我想整理并合并它们。但这让我想起了为什么我从不这样做:一旦我编辑了某篇帖子(哪怕是几年前的旧帖)的标签,它就会被重新置顶。如果我批量编辑大量标签(我本来打算每隔几个月做一次),这会导致所有活跃的讨论被重新打标签的帖子淹没,完全打乱了讨论顺序。

作为站点管理员,我是否有什么方法可以编辑标签,或者以其他方式编辑帖子而不影响其在列表中的位置?

2 个赞