Как исправить «xinit: невозможно подключиться к X-серверу» в nodejs exec - PullRequest
0 голосов
/ 11 апреля 2019

Мой Xserver не запускается из скрипта nodejs.Я должен запустить его как пользователь root, поскольку в противном случае возникает следующая ошибка:

/ usr / lib / xorg / Xorg.wrap: запускать X-сервер разрешено только пользователям консоли

поэтому я запускаю скрипт как

контроллер узла sudo.js

Сначала я запускаю свой контроллер для запуска веб-сервера локали.Затем я хочу запустить сервер Xorg и запустить свой браузер chromium для каждой команды xinit.

const http = require('http');
const fs = require('fs');
const path = require('path');
const config = require('./config.json');
const shell = require('shelljs');

http.createServer(function (request, response) {
    var filePath = '.' + request.url;
    if(filePath == './'){
        filePath = config.baseFile;
    }
    var extname = path.extname(filePath);
    var contentType='text/html';
    switch(extname){
        case '.js':
            contentType = 'text/javascript';
            break;
        case '.css':
            contentType = 'text/css';
            break;
        case '.json':
            contentType = 'application/json';
            break;
        case '.png':
            contentType = 'image/png';
            break;      
        case '.jpg':
            contentType = 'image/jpg';
            break;
        case '.wav':
            contentType = 'audio/wav';
            break;
    }
    fs.readFile(filePath, function(error, content) {
        if (error) {
            if(error.code == 'ENOENT'){
                fs.readFile('./404.html', function(error, content) {
                    response.writeHead(200, { 'Content-Type': contentType });
                    response.end(content, 'utf-8');
                });
            }
            else {
                response.writeHead(500);
                response.end('Sorry, check with the site admin for error: '+error.code+' ..\n');
                response.end(); 
            }
        }
        else {
            response.writeHead(200, { 'Content-Type': contentType });
            response.end(content, 'utf-8');
        }
    });
}).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');
shell.exec('xinit chromium-browser --start-maximized -kiosk http://localhost:8080/');

(EE)
Неустранимая ошибка сервера:
(EE) Сервер уже активендля отображения 0
Если этот сервер больше не работает, удалите /tmp/.X0-lock и запустите снова.
(EE)
(EE)
Пожалуйста, обратитесь в службу поддержки X.Org Foundation.на http://wiki.x.org для справки.
(EE)
Протокол не указан
xinit: отказ от
xinit: невозможно подключиться к X-серверу: ресурс временно недоступен
xinit: серверошибка

Я удалял этот файл несколько раз.Я использую дистрибутив raspberry stretch lite.

$ ps auxw |grep X
pi 949 0,0 0,0 3536 624 tty1 S + 16:38 0:00 xinit / etc / X11 / xinit / xinitrc - / etc / X11 / xinit / xserverrc: 0 vt1 -keeptty -auth / tmp / serverauth.wsn7HgMgWE
root 949 0,0 3,9 182112 37440 tty1 S1 16:38 0:00 / usr / lib / xorg / Xorg -nolisten tcp: 0 vt1 -keeptty -auth /tmp/serverauth.wsn7HgMgWE
pi 1188 0,0 0,0 4772572 tty5 R + 17:18 0:00 grep --color = auto X

...