/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
。
我正在尝试创建一个 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
。