在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包装器呢?
答
您需要确保用于压缩文件的方法包括保留或设置Unix格式的执行权限。当文件从S3解压缩后,它们将被保留。
请显示您的lambda代码,以便我们可以看到您如何使用此库。 – johni