Я пишу предпочтительный вид расширения оболочки GNOME и сталкиваюсь с проблемами при использовании функции imports.lang
для написания приложения в объектно-ориентированной манере.
const Gtk = imports.gi.Gtk
const Lang = imports.lang
Gtk.init(null)
const MyWindow = new Lang.Class({...})
Открытие окна предпочтений в первый раз работает, но последующие выдают следующую ошибку: Error: Type name Gjs_MyWindow is already registered
. При первом закрытии окна выдает ошибку: TypeError: prefsModule.init is not a function
.
Работает следующий более императивный код:
const Gtk = imports.gi.Gtk
Gtk.init(null)
const window = new Gtk.Window({ type: Gtk.WindowType.TOPLEVEL })
Основываясь на выданных ошибках, я предполагаю, что класс переопределяется. Как я могу избежать переопределения и получить определенный класс в противном случае? (Есть ли какие-нибудь документы, на которые я могу сослаться?)