Использование NSSM для запуска дочернего процесса NodeJs в службе Windows не работает - PullRequest
0 голосов
/ 11 января 2019

Таким образом, у меня в настоящее время есть приложение Nodejs, которое порождает дочерний процесс, который выполняет приложение Java, и это работает очень хорошо, когда запускается непосредственно из командной строки.

http.createServer(function (request, response) {

console.log('Started Executing Request! \n' );

const { exec } = require('child_process');
exec('"C:\\Program Files\\Java\\jdk1.8.0_172\\bin\\java.exe" -jar "C:\\Temp\\myjava.jar"', (err, stdout, stderr) => {
  if (err) {
      console.log('There was an error! ' + err);
    // node couldn't execute the command
    return;
  }

  // the *entire* stdout and stderr (buffered)
  console.log('stdout: ' + stdout);
  console.log('stderr: ' + stderr);
});

console.log('Finished Executing Request! \n' );
}).listen(8087);

// Console will print the message
console.log('Server running at http://127.0.0.1:8087/ \n');

Проблема, с которой я столкнулся, заключается в том, что когда я помещаю это в службу, кажется, что он не хочет запускать Java-приложение. У меня есть вывод в файл журнала, и у меня есть "Запущенный запрос на выполнение" и "Законченный запрос на выполнение!" в журнале, но Java не выполняется.

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Я пытался распечатать на принтере этикеток, так что это оказалось проблемой с самим драйвером принтера. Кажется, печать из службы склонна к проблемам, поэтому я пошел другим путем. Что я закончил делать, так это то, что создал собственное настольное приложение, которое свернулось в системный трей на окнах. Вышеуказанное приложение правильно работало в Mac и Linux.

0 голосов
/ 11 января 2019

Обязательно установите учетную запись пользователя на вкладке «Вход в систему»:

enter image description here

Укажите учетную запись, в которую вы вошли, когда вы «запускаете прямо из командной строки», чтобы Java могла находить важные переменные среды, необходимые для ее работы (например, JAVA_HOME).

Эти переменные среды, вероятно, недоступны в вашей учетной записи "Local System", поэтому у вас возникают проблемы с запуском java там ...

...