Node.js 无法从Windows上的express.js生成自定义.exe

Node.js 无法从Windows上的express.js生成自定义.exe,node.js,express,cmd,child-process,spawn,Node.js,Express,Cmd,Child Process,Spawn,我在windows上使用node.js/express.js,当用户拍摄图像并从手机上传时,我会执行一个命令。上传后,我运行myApp.exe执行一些openCV图像处理,并将更新后的图像输出到一个输出目录,该目录是下面命令中的一个参数 我可以使用child_process.exec从我的webapp启动它,但是如果我自己在命令行运行它,性能会慢60倍。为了提高性能,我希望使用Spawn,但我不知道这是否是一个准确的假设,如果不是,请告诉我 var exec = require('child_p

我在windows上使用node.js/express.js,当用户拍摄图像并从手机上传时,我会执行一个命令。上传后,我运行myApp.exe执行一些openCV图像处理,并将更新后的图像输出到一个输出目录,该目录是下面命令中的一个参数

我可以使用child_process.exec从我的webapp启动它,但是如果我自己在命令行运行它,性能会慢60倍。为了提高性能,我希望使用Spawn,但我不知道这是否是一个准确的假设,如果不是,请告诉我

var exec = require('child_process').exec; 
var child = exec('C:\\opt\\package_v030_package\\myApp.exe 
--user="C:\\opt\\package_v030_package\\Phone\\'+file.filename+'" 
--mv="C:\\opt\\package_v030_package\\mv\\'+req.body.detectionString+'.bmp" 
--outPath="C:\\opt\\package_v030_package\\output" 
--outputScaled 
--outputScaledOverlaid');

  child.stdout.on('data', function(data) {
      console.log('stdout: ' + data);
  });
  child.stderr.on('data', function(data) {
      console.log('stdout: ' + data);
  });
  child.on('close', function(code) {
      console.log('closing code: ' + code);
      //res.json("success")
  });
我尝试使用spawn启动它,但它无法执行以下命令:“错误子进程退出,代码为4294967295”。代码如下:

  var spawn = require('child_process').spawn;
  var cmd = spawn('cmd', ['/s',
  '/c',
  'C:\\opt\\package_v030_package\\myApp.exe',
  '--user="C:\\opt\\package_v030_package\\Phone\\'+file.filename+'"',
  '--mv="C:\\opt\\package_v030_package\\mv\\'+req.body.detectionString+'.bmp"',
  '--outPath="C:\\opt\\package_v030_package\\output"',
  '--outputScaled',
  '--outputScaledOverlaid'
  ]);

  cmd.stdout.on('data', (data) => {
   console.log(`stdout: ${data}`);
  });

  cmd.stderr.on('data', (data) => {
   console.log(`stderr: ${data}`);
  });

  cmd.on('close', (code) => {
    console.log(`child process exited with code ${code}`);
  });
似乎我可以从spawn中只执行myApp.exe,因为当我添加任何参数时,它都会失败。甚至当我硬编码我注入的变量时。我的参数是否存在问题,或者我是否错误地生成了myApp.exe

更新1

我将该命令放在.bat中,并能够使用spawn从node.js执行它。它并没有提高性能,这让我相信性能的降低是node.js在windows平台上的一个限制

此外,我使用postman进行了一些测试,看看是否可以在不发生任何其他事情的情况下优化调用,但没有成功。如果这种情况发生变化,node.js能够更好地处理CPU密集型子进程的性能,我将保留这个问题

更新2和回答


我可以通过将在命令行运行的命令放入一个java类中,并将detectionString作为参数来修复这个问题。然后从节点使用spawn启动.jar文件。这导致速度显著提高,运行起来就像我自己在命令行上运行一样。

我能够通过将在命令行上运行的命令放入一个java类中,并将detectionString作为参数来解决这个问题。然后从节点使用spawn启动.jar文件。这导致速度显著提高,运行起来就像我自己在命令行上运行一样。

我能够通过将在命令行上运行的命令放入一个java类中,并将detectionString作为参数来解决这个问题。然后从节点使用spawn启动.jar文件。这导致速度显著提高,运行起来就像我自己在命令行中运行一样