【问题标题】:How to open a .exe file on Linux Hosted NodeJS如何在 Linux 托管的 NodeJS 上打开 .exe 文件
【发布时间】:2019-10-10 02:16:41
【问题描述】:

我正在尝试让我的节点服务器在 Linux 托管的 NODEJS 实现上启动一个 .exe 文件

我的 .exe 位于此处:'/home/username/projects/ProjectName/server/webserver/Project.exe'

当我尝试启动 exe 时

与:

   exec('/home/username/projects/ProjectName/server/webserver/Project.exe', ["/home/username/projects/ProjectName/server/webserver/files/"+date], function(err, data) {
}

我收到文件不喜欢的错误

看起来像这样:

{ Error: Command failed: /home/username/projects/ProjectName/server/webserver/Project.exe /home/username/projects/ProjectName/server/webserver/files/31005
/home/username/projects/ProjectName/server/webserver/Project.exe: 1: /home/username/projects/ProjectName/server/webserver/Project.exe: MZ�##���@�#��: not found
/home/username/projects/ProjectName/server/webserver/Project.exe: 2: /home/username/projects/ProjectName/server/webserver/Project.exe: Syntax error: ")" unexpected

    at ChildProcess.exithandler (child_process.js:294:12)
    at ChildProcess.emit (events.js:198:13)
    at maybeClose (internal/child_process.js:982:16)
    at Socket.stream.socket.on (internal/child_process.js:389:11)
    at Socket.emit (events.js:198:13)
    at Pipe._handle.close (net.js:606:12)
  killed: false,
  code: 2,
  signal: null,
  cmd:
   '/home/username/projects/ProjectName/server/webserver/Project.exe /home/username/projects/ProjectName/server/webserver/files/31005' }

当尝试在基于 Windows 的 NodeJS 上使用 Windows 目录而不是 linux 运行相同的功能时,它可以在 Linux 上通过 Wine 打开文件,我的函数调用中是否有某个地方我需要引导它打开.exe 与 WINE?如果是这样,我该怎么做?

【问题讨论】:

  • 所以你想在 Linux 上运行一个 Windows 可执行文件?对吗?
  • 这是正确的 Rob,
  • 您为什么认为 Windows 二进制文件可以在 Linux 上运行?

标签: node.js linux wine


【解决方案1】:

试试这个

const { exec} = require('child_process');
 exec('wine /home/username/projects/ProjectName/server/webserver/Project.exe /home/username/projects/ProjectName/server/webserver/files/'+date,
function(err, data){

});

https://superuser.com/questions/1058985/launch-program-with-wine-using-exe-arguments https://stackoverflow.com/a/49069169/12167785

【讨论】:

  • 所以,现在它给了我 ENOENT(找不到文件)我认为由于某种原因,当它调用函数时它会留下引号,因为错误日志的一部分显示:cmd:'wine /home /aaronmanill/projects/Pizzabox/pizzaboxwebsite/server/webserver/Pizza_page_server.exe 31528' 如果我尝试在终端中使用引号运行它,我会得到相同的错误,但如果我在终端中不使用引号运行它,它会正常运行
  • @AaronManill 尝试运行 exec('wine') 看看它是否有效
【解决方案2】:

我通过以下方式获得了我想要的功能:

exec("wine", ["/home/username/projects/ProjectName/server/webserver/Project.exe", date], function(err,data){
}

【讨论】:

    猜你喜欢
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 2014-10-20
    相关资源
    最近更新 更多