我尝试使用nodejs native child_procees.exec()尝试在我的firebase函数中执行cpdf的二进制文件。在本地测试中工作正常,但是当我部署我的函数时,我收到此错误日志:
Error: Command failed: /user_code/cpdf -pages file.pdf
/bin/sh: 1: /user_code/cpdf: Permission denied
有办法给予权限吗? 这是我的代码:
const exec = require('child_process').exec
var executablePath = path.join(__dirname,'/cpdf')//<-my binary file compiled for linux 32 bits
var filePathIn = path.join(os.tmpdir(),'/file.pdf')
exec(`${executablePath} ${filePathIn} -pages`,
function(error, stdout, stderr) {
if (error !== null){
console.log('error',error)
}else{
console.log('ok',stdout)
}
})
提前谢谢
答案 0 :(得分:0)
您需要读取和可执行权限
sudo chmod 755 /user_code/cpdf
或
sudo chmod -RX /user_code/cpdf
答案 1 :(得分:0)
最后,我找到了解决方案。事实是node_modules
文件夹具有执行权限,因此我在我的package.json中添加了node-cpdf的npm repo,其中包含必要的二进制文件,然后使用它的路由到可执行文件。这是我的代码更新:
const exec = require('child_process').exec
var executablePath = path.join(__dirname,'node_modules/cpdf-n/bin/cpdf-linux-64')
var filePathIn = path.join(os.tmpdir(),'/file.pdf')
exec(`${executablePath} -pages ${filePathIn}`,
function(error, stdout, stderr) {
if (error !== null){
console.log('error',error)
}else{
console.log('ok',stdout)
}
})