运行 一个在 NodeJS / Express 服务器上具有共享对象依赖关系的二进制文件

Run a binary file with shared object dependencies on NodeJS / Express server

我在 NodeJS/Express 服务器 (localhost) 上使用 NodeJS childprocess 到 运行 shell 命令。基本的 shell 命令一切顺利,例如 'ls'(来自 NodeJS 文档):

const { spawn } = require('child_process');
const ls = spawn('ls', ['-lh', '/usr']);

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

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

ls.on('close', (code) => {
console.log(`child process exited with code ${code}`); 
});

现在,我需要做的是运行一个具有共享对象依赖关系的二进制文件。这些对象位于服务器文件夹 'public/libraries' 内。我尝试用

修改前一个
const runBinary = spawn('/path/to/binary/file', ['-someoption', 'public/libraries']);

错误信息是'error while loading shared libraries ... no such file or directory',意思是找不到共享对象。我不知道如何

1) 告诉'runBinary'共享对象文件夹的位置,然后

2) 运行 二进制文件成功在控制台创建输出。

我已经为 运行 Bash shell 中的二进制文件安装了所有必要的工具,并且已经测试它可以正常工作。

有什么想法吗?

您可以通过将环境变量 LD_LIBRARY_PATH 设置为 public/libraries 目录的绝对路径来解决此问题。

像这样:

spawn('/path/to/binary/file', ['-someoption'],
      {env: {LD_LIBRARY_PATH: '/path/to/public/libraries'}})