/app/.jdk/bin/java: 无法在 Heroku 上使用 node-pty 执行二进制文件

/app/.jdk/bin/java: cannot execute binary file using node-pty on Heroku

我正在尝试创建一个 node-pty 进程。在本地开发时,这很好用,没有问题。但是,当它在 Heroku 上运行时,会出现错误:/app/.jdk/bin/java: cannot execute binary file

我只用 ["java"] 试过 运行 它,但出现了同样的错误。因此,它无法启动 java 二进制文件。

然而,当我手动输入命令时,它工作得很好。

  const shell = os.platform() === 'win32' ? 'powershell.exe' : 'bash';

  const ptyProcess = pty.spawn(shell, ["java", "-jar", "Klox.jar"], {
    name: 'xterm-color',
    cols: 80,
    rows: 30,
    cwd: process.env.HOME,
    env: process.env
  });

知道如何解决这个问题吗?

解决了问题,

不是使用 powershell 或 bash 生成 shell,而是直接使用您尝试 运行 的可执行文件生成 shell .所以,java 就我而言。

实际上,我所做的:

  const ptyProcess = pty.spawn("java", ["-jar", "Klox.jar"], {
    name: 'xterm-color',
    cols: 80,
    rows: 30,
    cwd: process.env.HOME,
    env: process.env
  });

因此,“java”而不是旧的 shell 变量。

还有一点要记住,在windows 的末尾添加.exe 扩展名,否则它会说找不到文件。例如:windows 上的 java.exe 和 linux 上的 java