我最近辞职,删除了knex
和sqlite
的电子应用程序,因为在Windows sqlite
数据库没有创建可执行文件的情况下,在Windows上进行重建也很麻烦似乎有效。 Linux可执行文件可以在sqlite
上与Mac进行相同的猜测。
要使用sqlite
,我已经使用electron-rebuild
重建了应用程序。为了清除重建,我做了rm -rf node_modules && npm install
我最终决定使用dexie
使用IndexDB。
但是现在,当我尝试从npm运行程序时,我得到了
ERROR:buffer_manager.cc(488)] [.DisplayCompositor] GL错误:GL_INVALID_OPERATION:glBufferData:<-来自先前GL命令的错误
我该如何解决,为什么会发生?
NB:应用程序运行正常,但终端出现的错误很烦人,我不知道为什么会发生
答案 0 :(得分:9)
进行测试
electron /path/to/the/app
[您会收到该错误]
尝试
electron --disable-gpu /path/to/the/app
[您可能不会收到该错误]
解决方法是在命令行中添加“ --disable-gpu”以强制执行 Web视图不使用GPU功能。我能够在一个 通过在应用程序根目录中编辑package.json文件并更改 像“开始”这样的行:“电子”。要“开始”:“电子。 --disable-gpu“
引用https://github.com/electron/electron/issues/7834#issuecomment-275802528
答案 1 :(得分:2)
基于Sudhakar RS的回答,我在package.json中创建了一个脚本以不使用GL
这是我的package.json
{
...
"scripts": {
"start": "electron --disable-gpu .", // --disable GL ERROR and use CPU
...
}
...
}
然后在您的终端中运行
npm run start
答案 2 :(得分:1)
运行electron-quick-start时出现相同的错误,但运行electron-boilerplate时却没有。
调查错误时,我也找到了这个问题,对我来说,也从“ electron --disable-gpu”开始。防止错误消息。但是我不必使用电子样板。因此,比较两者,我将差异追溯到电子样板中包含电子调试器,最终是:process.stderr.fd。
到目前为止,我发现足以避免错误的最小更改是:
diff --git a/main.js b/main.js
index 3508c8e..7df262b 100644
--- a/main.js
+++ b/main.js
@@ -2,6 +2,8 @@
const {app, BrowserWindow} = require('electron')
const path = require('path')
+process.stderr.fd;
+
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let mainWindow
因此,现在我试图了解process.stderr.fd;
的作用以及如何防止出现错误消息。仅仅获取stderr的文件描述符可以防止该错误,但显然可以,但似乎很奇怪。
我也对禁用GPU Vs获取文件描述符的相对优点感到好奇。
编辑:使用process.stderr;
获取流就足够了,不必获取文件描述符。
答案 3 :(得分:0)
我的问题解决方案: “ dev”:“ .electron-vue / dev-runner.js --disable-gpu”