如何将节点jssubprocess的输出图像发送到“父”?

我有一个被称为如下的subprocess:

server.js

app.get('/search', function (req, res) { var cp = spawn('node', 'app.js'); cp.stdout.on('data', function(data) { console.log('stdout: ' + data); }); ... }); 

目前app.js正在使用chrome-headless的captureScreenshot函数来生成屏幕截图,然后将其存储在本地。

app.js:

  const img = await Page.captureScreenshot({format: 'png', fromSurface: true}); fs.writeFile('./screenshot.png', img.data, 'base64', function (err) { if (err) { console.log(err); } }); 

没有必要在本地存储图像,而是将其上传到服务器。 我试图find一种方法来获得这个function的工作:

server.js V2

 app.get('/search', function (req, res) { var cp = spawn('node', 'app.js'); cp.stdout.on('data', function(data) { upload_image(data); }); ... }); 

app.js V2

  const img = await Page.captureScreenshot({format: 'png', fromSurface: true}); //EXPOSE 'img' to parent via cp.stdout - How do I do this part? }); 

你可以通过fork()发送消息

server.js

 const { fork } = require('child_process'); app.get('/search', function (req, res) { const forked = fork('app.js'); forked.on('message', (data) => { uploadImage(data.imageURL); // It will be send by parent. }); ... }); 

app.js

 const img = await Page.captureScreenshot({format: 'png', fromSurface: true}); fs.writeFile('./screenshot.png', img.data, 'base64', function (err) { if (err) { console.log(err); } process.send({ imageURL: './screenshot.png' }); //You can send any data from here. }); 

这是你的好教程。

https://medium.freecodecamp.org/node-js-child-processes-everything-you-need-to-know-e69498fe970a

我希望这对你有所帮助。