我正在为gnome-shell编写扩展。 javascript扩展生成一个sql查询并捕获标准输出的输出。在sql查询求值为0元组/记录的情况下,我的扩展名正在崩溃。
以下是代码段。
let [success, out, err, error] = GLib.spawn_sync(null, ["sqlite3", "-line", places, sqlQuery], null, 4, null);
let result = out.toString(); // Crashing here for 0 tuples. I was expecting 'result = ""'
我是一个javascript新手。我不明白在这种情况下应该如何处理对象out
。该对象不为null;它也不是未定义的。
typeof out == null // false
typeof out == undefined // false
typeof out == "object" // true
修改
typeof out == "null" // false
typeof out == "undefined" // false
typeof out == "object" // true
答案 0 :(得分:0)
我发现如果我执行以下操作,我可以防止崩溃
let [success, out, err, errno] = GLib.spawn_sync(null, ["sqlite3", "-line", places, sqlQuery], null, 4, null);
if (out.length > 0) {
let records = out.toString().split('\n\n');
}
我不明白为什么out.toString()
无法给我一个空字符串而不是崩溃。希望我能够了解更多有关javascript和glib的信息。