Почему nodejs child_process spawn неправильно соединяет аргументы с функцией?

пользуюсь child_process для запуска джава бота через nodejs оболочку. При запуске через exec все работает нормально, но exec неудобен тем, что буферизирует весь вывод программы и выдает его в конце работы большим бандлом, а хотелось бы реагировать на сообщения, которые бот в stdout выводит. Для этого есть spawn, который позволяет подписываться на сообщения из stdout и stderr, но тут возникает проблема. Запись команды в spawn сделана так, что ты должен вписать отдельно команду, и отдельно передать ее аргументы. За этим кроется проблема, поскольку spawn по всей видимости неправильно склеивает команду с аргументами, и java выдает мне ошибку Unrecognized option: -jar "E:\Java root\intelliJ IDEA\...."

При выполнении команды через exec все работает нормально. Вот код двух примеров:

    const stream = spawn("C:\\Users\\user\\.jdks\\corretto-17.0.4\\bin\\java.exe", [
        "-jar \"E:\\Java root\\intelliJ IDEA\\EnglishStartupBot\\out\\artifacts\\EnglishStartupBot_jar\\EnglishStartupBot.jar\""
    ]) //выдает ошибку

    exec("C:\\Users\\user\\.jdks\\corretto-17.0.4\\bin\\java.exe -jar \"E:\\Java root\\intelliJ IDEA\\EnglishStartupBot\\out\\artifacts\\EnglishStartupBot_jar\\EnglishStartupBot.jar\"", (error, stdout, stderr) => {})
    //работает нормально

Ответы (0 шт):