当我尝试启动开发中的 ElectonJs 应用程序时,出现错误
[13117:1104/071616.998450:ERROR:ozone_platform_x11.cc(245)] Missing X server or $DISPLAY
。使用的系统是Ubuntu 24.04.1 LTS
,窗口系统是X11
。
即使使用最少的代码,只有两个文件(
main.js
和index.html
),我也会收到此错误:
main.js
const { app, BrowserWindow } = require("electron");
const createWindow = () => {
const win = new BrowserWindow({
width: 800,
height: 600,
});
win.loadFile("index.html");
};
app.whenReady().then(() => {
createWindow();
});
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Hello World!</title>
</head>
<body>
<div>Hello World from Humans !</div>
</body>
</html>
在出现
Missing X server or $DISPLAY
错误之前,我收到错误 [16018:1104/074700.492381:FATAL:setuid_sandbox_host.cc(163)] The SUID sandbox helper binary was found, but is not configured correctly
。
但我通过在终端中执行解决了它:
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=1
我不知道是否是这个原因,这里有更详细的信息找到了SUID沙箱助手二进制文件,但配置不正确
我尝试通过添加到
$DISPLAY
文件的末尾来设置 ~/.bashrc
环境变量:
export DISPLAY=127.0.0.1:0.0
如此处描述Electron:缺少 X 服务器或 $DISPLAY,但没有结果
我解决了这个问题。经过调查,它就像
$DISPLAY
环境变量被 Turbo-repo 取消设置(我的应用程序位于 NPM 工作区中)。
所以我只需在 Turbo 配置文件(turbo.json)中添加 DISPLAY 作为要观看的变量:
{
"$schema": "https://turbo.build/schema.json",
"ui": "tui",
"globalEnv": ["DISPLAY"], // <== $DISPLAY is now in turbo scope
"tasks": {}
}