0

我正在尝试在 nodejs lambda 函数中运行 ghosscript 命令。我将 ghostscript 二进制文件保存在我的一个文件夹中。在这里使用 child_process.execFile 执行是我的代码。

 module.exports = function gsConvert(args) {
  return new Promise(async function (resolve, reject) {
    try {
      console.log("dirname :: ", __dirname);
       args = [
    "-dBATCH",
    "-dNOPAUSE",
    "-dPDFFitPage=true",
    "-dDEVICEWIDTHPOINTS=800",
    "-dDEVICEHEIGHTPOINTS=800",
    "-sPageList=1",
    "-sDEVICE=jpeg",
    `-sOutputFile="${imgFilePath}"`,
    `"${filePath}"`,
  ]; 
      //----------
      await execFile(
        "./bin/gs",
        args,
        {
          // cwd: `${__dirname}`,
          'cwd': "/var/task/src/lambda/pdfThumbnail/ghostScript",
          'maxBuffer': 1024 * 2000,
        },
        function (err, stdout, stderr) {
          if (err) {
            reject(err);
          } else if (stderr.length > 0) {
            reject(new Error(stderr.toString()));
          } else {
            resolve(stdout);
          }
        }
      );
    } catch (err) {
      reject({ "err :: ": err });
    }
  });
};

但它给出了错误-

{ Error: Command failed: ./bin/gs -dBATCH -dNOPAUSE -dPDFFitPage=true -dDEVICEWIDTHPOINTS=800 -dDEVICEHEIGHTPOINTS=800 -sPageList=1 -sDEVIC      './bin/gs -dBATCH -dNOPAUSE -dPDFFitPage=true -dDEVICEWIDTHPOINTS=800 -dDEVICEHEIGHTPOINTS=800 -sPageList=1 -sDEVICE=jpeg -sOutputFile="/tmp/java_tutorial.jpeg" "/tmp/doc.pdf"' }
"Error :: ": {
            "killed": false,
            "code": 1,
            "signal": null,
            "cmd": "./bin/gs -dBATCH -dNOPAUSE -dPDFFitPage=true -dDEVICEWIDTHPOINTS=800 -dDEVICEHEIGHTPOINTS=800 -sPageList=1 -sDEVICE=jpeg -sOutputFile=\"/tmp/java_tutorial.jpeg\" \"/tmp/doc.pdf\""
        }

我的命令在终端中成功运行,但在 lambda 函数中,我在更改 args =[--version] 时遇到问题,然后它显示正确的输出。这意味着 Ghostscript 二进制文件是可执行的,但我的主要命令不是不起作用

4

0 回答 0