如何将节点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
我希望这对你有所帮助。