如何解决在 Ubuntu 24 (X11) 上启动 ElectronJs 应用程序时“缺少 X 服务器或 $DISPLAY”的问题?

问题描述 投票:0回答:1

当我尝试启动开发中的 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,但没有结果

javascript electron x11 ubuntu-24.04
1个回答
0
投票

我解决了这个问题。经过调查,它就像

$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": {}
}
© www.soinside.com 2019 - 2024. All rights reserved.