Для приложения Electron, которое порождает подпроцессы узла, подпроцесс не получает полный доступ к диску - PullRequest
0 голосов
/ 31 января 2020

У меня есть приложение Electron. Он запускает несколько процессов узлов в фоновом режиме, например:

if(process.env.NODE_ENV === 'production') {
    pathToNode = pathToExtraResources + 'node';
    pathToBackgroundProcess = pathToExtraResources + 'script.js';
} else {
    const path = require('path');
    const parentPath = path.parse(path.resolve(__dirname, '../'));
    const appWorkingDirectory = parentPath.dir + '/' + parentPath.name;
    pathToBackgroundProcess = `${appWorkingDirectory}/extraResources/script.js`;
}


backgroundProcess = child_process.spawn(pathToNode, [pathToBackgroundProcess]);

Итак, чтобы заставить все это работать, я скопировал мой двоичный файл узла в папку extraResources вместе с дочерним процессом скрипт. Мне также пришлось скопировать несколько узлов node_modules в extraResources.

Мой подпроцесс, скрипт узла, требует разрешений полного доступа к диску. Я включил полный доступ к диску в «Безопасность и конфиденциальность» для Terminal.app и для моей производственной сборки (повторное включение с каждой новой сборкой).

Благодаря Debugtron я определил, что подпроцесс фактически не наследует полный доступ к диску ....

Все работает отлично в режиме разработки ... это упакованное приложение, в котором у меня проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...