У меня есть приложение 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 я определил, что подпроцесс фактически не наследует полный доступ к диску ....
Все работает отлично в режиме разработки ... это упакованное приложение, в котором у меня проблемы.