Вот мой код:

test.js

const {exec} = require("child_process")

var c = exec("php artisan serve", {
        cwd: "C:/Users/DELL/Laravel Projects/lktest3"
    }, (error, stdout, stderr) => {
        if (error) {
            console.error(`exec error: ${error}`);
        return;
    }
    console.log(`stdout: ${stdout}`);
    console.log(`stderr: ${stderr}`);
})
setTimeout(() => {
    c.kill('SIGHUP')
}, 10000);

Когда я запускаю node test.js, я получаю такую ошибку:

$ node test.js
internal/child_process.js:397
      throw errnoException(err, 'kill');
      ^

Error: kill ENOSYS
    at exports._errnoException (util.js:1018:11)
    at ChildProcess.kill (internal/child_process.js:397:13)
    at Timeout.setTimeout (C:\Users\DELL\Documents\laravel-kit\test.js:14:7)
    at ontimeout (timers.js:386:14)
    at tryOnTimeout (timers.js:250:5)
    at Timer.listOnTimeout (timers.js:214:5)

Я написал этот код, как сказано в API дочерних процессов NodeJS. Но это не работает.

1
Tareque Md Hanif 2 Янв 2018 в 17:01

2 ответа

Лучший ответ

Я использовал модуль tree-kill, чтобы убить дочерний процесс в Windows.

Используйте это так:

var kill = require('tree-kill');
kill(your_child_process.pid, 'SIGKILL', function(err) {
    // Do things
});
0
Tareque Md Hanif 3 Янв 2018 в 14:28

Используйте childProcess.spawn(command) (docs ) вместо childProcess.exec, поскольку "exec" создает новую оболочку и запускает команду в этой оболочке.

0
Kit Isaev 2 Янв 2018 в 18:45