Skip to content

Commit dde015d

Browse files
committed
fix
1 parent 48ff97f commit dde015d

File tree

4 files changed

+68
-26
lines changed

4 files changed

+68
-26
lines changed

resources/js/electron-plugin/dist/server/api/childProcess.js

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,37 @@ import express from 'express';
22
import { utilityProcess } from 'electron';
33
import state from '../state';
44
import { notifyLaravel } from "../utils";
5+
import { join } from 'path';
56
const router = express.Router();
67
router.post('/start', (req, res) => {
78
const { alias, cmd, args, cwd, env } = req.body;
8-
console.log(req.body);
9-
if (state.processes[alias] !== null) {
9+
if (state.processes[alias] !== undefined) {
1010
res.sendStatus(409);
1111
return;
1212
}
13-
const proc = utilityProcess.fork(cmd, args || null, {
14-
env: env || null,
15-
cwd: cwd || null,
13+
const proc = utilityProcess.fork(join(__dirname, '../../electron-plugin/dist/server/childProcess.js'), cmd, {
14+
cwd,
1615
serviceName: alias,
16+
stdio: 'pipe',
17+
env: Object.assign(Object.assign({}, process.env), env)
1718
});
18-
console.log(proc);
1919
proc.stdout.on('data', (data) => {
20-
console.log('Message received from process [' + alias + ']:', data);
20+
console.log('Message received from process [' + alias + ']:', data.toString());
2121
notifyLaravel('events', {
2222
event: 'Native\\Laravel\\Events\\ChildProcess\\MessageReceived',
2323
payload: {
2424
alias,
25-
data,
25+
data: data.toString(),
2626
}
2727
});
2828
});
2929
proc.stderr.on('data', (data) => {
30-
console.log('Error received from process [' + alias + ']:', data);
30+
console.log('Error received from process [' + alias + ']:', data.toString());
3131
notifyLaravel('events', {
3232
event: 'Native\\Laravel\\Events\\ChildProcess\\ErrorReceived',
3333
payload: {
3434
alias,
35-
data,
35+
data: data.toString(),
3636
}
3737
});
3838
});
@@ -44,22 +44,23 @@ router.post('/start', (req, res) => {
4444
});
4545
});
4646
proc.on('exit', (code) => {
47-
console.log('Process [' + alias + '] exited!');
47+
console.log('Process [' + alias + '] exited with code [' + code + ']!');
4848
notifyLaravel('events', {
4949
event: 'Native\\Laravel\\Events\\ChildProcess\\ProcessExited',
5050
payload: {
5151
alias,
5252
code,
5353
}
5454
});
55+
delete state.processes[alias];
5556
});
5657
state.processes[alias] = proc;
5758
res.json(proc);
5859
});
5960
router.post('/stop', (req, res) => {
6061
const { alias } = req.body;
6162
const proc = state.processes[alias];
62-
if (proc === null) {
63+
if (proc === undefined) {
6364
res.sendStatus(200);
6465
return;
6566
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const { spawn } = require('child_process');
2+
const proc = spawn(process.argv[2], process.argv.slice(3), {});
3+
proc.stdout.on('data', (data) => {
4+
console.log(data.toString());
5+
});
6+
proc.stderr.on('data', (data) => {
7+
console.error(data.toString());
8+
});
9+
proc.on('close', (code) => {
10+
process.exit(code);
11+
});

resources/js/electron-plugin/src/server/api/childProcess.ts

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,49 +2,50 @@ import express from 'express';
22
import { utilityProcess } from 'electron';
33
import state from '../state';
44
import { notifyLaravel } from "../utils";
5+
import {join} from 'path'
56

67
const router = express.Router();
78

89
router.post('/start', (req, res) => {
910
const {alias, cmd, args, cwd, env} = req.body
1011

11-
console.log(req.body)
12-
13-
if (state.processes[alias] !== null) {
12+
if (state.processes[alias] !== undefined) {
1413
res.sendStatus(409)
1514
return
1615
}
1716

1817
const proc = utilityProcess.fork(
18+
join(__dirname, '../../electron-plugin/dist/server/childProcess.js'),
1919
cmd,
20-
args || null,
2120
{
22-
env: env || null,
23-
cwd: cwd || null,
21+
cwd,
2422
serviceName: alias,
23+
stdio: 'pipe',
24+
env: {
25+
...process.env,
26+
...env,
27+
}
2528
}
2629
)
2730

28-
console.log(proc)
29-
3031
proc.stdout.on('data', (data) => {
31-
console.log('Message received from process [' + alias + ']:', data)
32+
console.log('Message received from process [' + alias + ']:', data.toString())
3233
notifyLaravel('events', {
3334
event: 'Native\\Laravel\\Events\\ChildProcess\\MessageReceived',
3435
payload: {
3536
alias,
36-
data,
37+
data: data.toString(),
3738
}
3839
})
3940
})
4041

4142
proc.stderr.on('data', (data) => {
42-
console.log('Error received from process [' + alias + ']:', data)
43+
console.log('Error received from process [' + alias + ']:', data.toString())
4344
notifyLaravel('events', {
4445
event: 'Native\\Laravel\\Events\\ChildProcess\\ErrorReceived',
4546
payload: {
4647
alias,
47-
data,
48+
data: data.toString(),
4849
}
4950
})
5051
})
@@ -58,14 +59,15 @@ router.post('/start', (req, res) => {
5859
})
5960

6061
proc.on('exit', (code) => {
61-
console.log('Process [' + alias + '] exited!')
62+
console.log('Process [' + alias + '] exited with code [' + code + ']!')
6263
notifyLaravel('events', {
6364
event: 'Native\\Laravel\\Events\\ChildProcess\\ProcessExited',
6465
payload: {
6566
alias,
6667
code,
6768
}
6869
})
70+
delete state.processes[alias]
6971
})
7072

7173
state.processes[alias] = proc
@@ -78,7 +80,7 @@ router.post('/stop', (req, res) => {
7880

7981
const proc = state.processes[alias]
8082

81-
if (proc === null) {
83+
if (proc === undefined) {
8284
res.sendStatus(200)
8385
return
8486
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const { spawn } = require('child_process')
2+
3+
const proc = spawn(
4+
process.argv[2],
5+
process.argv.slice(3),
6+
{
7+
// cwd: options.cwd,
8+
// env: {
9+
// ...process.env,
10+
// ...options.env
11+
// },
12+
}
13+
);
14+
15+
// Handle normal output
16+
proc.stdout.on('data', (data) => {
17+
console.log(data.toString());
18+
});
19+
20+
// Handle error output
21+
proc.stderr.on('data', (data) => {
22+
console.error(data.toString());
23+
});
24+
25+
// Handle process exit
26+
proc.on('close', (code) => {
27+
process.exit(code)
28+
});

0 commit comments

Comments
 (0)