在Lambda上运行node_modules二进制文件?

问题描述:

我试图使用mozjpeg压缩Lambda上的图像,但遇到一些问题。在Lambda上运行node_modules二进制文件?

二进制不具有执行权限,所以我得到这个错误:

"exports._errnoException (util.js:870:11)", 
"ChildProcess.spawn (internal/child_process.js:298:11)", 
"Object.exports.spawn (child_process.js:362:9)", 
"ret.catch.module.exports.promise (/var/task/node_modules/imagemin-mozjpeg/node_modules/exec-buffer/node_modules/execa/index.js:132:26)", 
"/var/task/node_modules/imagemin-mozjpeg/node_modules/exec-buffer/index.js:36:15" 

当我尝试修复权限,我得到这个错误:

'chmod: changing permissions of ‘/var/task/node_modules/imagemin-mozjpeg/node_modules/mozjpeg/vendor/cjpeg’: Read-only file system\n' 

是有没有一种方法可以在node_modules中执行二进制文件,或者从tmp目录中手动执行它们,而无需使用它们的nodejs包装器呢?

+0

请显示您的lambda代码,以便我们可以看到您如何使用此库。 – johni

您需要确保用于压缩文件的方法包括保留或设置Unix格式的执行权限。当文件从S3解压缩后,它们将被保留。