You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GNOME Shell扩展报错:Expected type string for argument 'domain' but got type undefined

GNOME Shell扩展报错:Expected type string for argument 'domain' but got type undefined

你好呀,看了你的问题和截断的代码片段,我大概能定位到问题所在啦——主要是两个点:代码不完整,还有扩展的国际化配置缺失导致了这个domain参数未定义的错误。

先说说最直观的问题:你贴的extension.js代码最后一行是this._indi...,明显没写完,正确的写法应该是:

Main.panel.addToStatusArea(Me.metadata.uuid, this._indicator);

这行是把你的面板按钮添加到状态栏里,不补全的话扩展肯定跑不起来。

然后是导致你那个报错的核心原因:你的扩展metadata.json文件里大概率没配置gettext-domain字段。gettext是GNOME扩展用来做国际化翻译的工具,它需要一个明确的域名参数,要是没在metadata.json里定义,ExtensionUtils.gettext就会拿到undefined,直接抛出这个类型错误。

解决步骤给你列出来:

  • 第一步:补全extension.js里的代码,把没写完的那行补成上面说的完整代码。
  • 第二步:检查你的metadata.json,确保里面有gettext-domain字段,模板大概是这样的:
{
  "uuid": "your-extension-id@your-name",
  "name": "你的扩展名称",
  "description": "你的扩展描述",
  "version": 1,
  "shell-version": ["42"],
  "gettext-domain": "your-extension-id@your-name"
}

这里的gettext-domain值一般和你的扩展UUID保持一致就好,不用搞复杂。

  • 第三步:如果还是有问题,可以在代码里显式初始化gettext,替代你现在的写法:
const { gettext, gettextDomain } = ExtensionUtils;
// 显式设置域名
gettextDomain(Me.metadata['gettext-domain']);
const _ = gettext;

这样能确保gettext拿到正确的域名参数。

最后,记得把扩展放在正确的目录下:~/.local/share/gnome-shell/extensions/你的扩展UUID/,然后按Alt+F2输入r重启GNOME Shell,再去扩展管理器里启用试试。

备注:内容来源于stack exchange,提问作者ibse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 08:48:16