javascript - 错误:EROFS:在 Lambda 中流式传输 xlsx 内容时是只读文件系统
问题描述
- 我正在使用 xlsx 库来解析 excel 文档以获取数据作为每个文件的工作表、每个文件的行、每个文件的列等...
- 在 AWS lambda 内部处理时,我收到以下错误堆栈
{"errorType":"Runtime.UnhandledPromiseRejection","errorMessage":"错误:EROFS: 只读文件系统,打开 'Dist Share Summary.xlsx'","reason":{"errorType":"Error"," errorMessage":"EROFS: 只读文件系统,打开'Dist Share Summary.xlsx'","code":"EROFS","errno":-30,"syscall":"open","path":" Dist Share Summary.xlsx","stack":["Error: EROFS: read-only file system, open 'Dist Share Summary.xlsx'"," at Object.openSync (fs.js:443:3)","在 Object.writeFileSync (fs.js:1194:35)"," 在 write_dl (/var/task/node_modules/xlsx/xlsx.js:2593:112)"," 在 write_zip_type (/var/task/node_modules/xlsx /xlsx.js:20730:31)"," 在 writeSync (/var/task/node_modules/xlsx/xlsx.js:20818:22)"," 在 Object.writeFileSync (/var/task/node_modules/xlsx/xlsx.js:20841:9) "," 在 workbook.SheetNames.forEach.element (/var/task/index.js:31:26)"," 在 Array.forEach ()"," 在 getParsedData (/var/task/index.js:27 :32)"," 在 Parsing (/var/task/index.js:20:32)"]},"promise":{},"stack":["Runtime.UnhandledPromiseRejection: 错误: EROFS: 只读文件系统,打开 'Dist Share Summary.xlsx'"," at process.on (/var/runtime/index.js:37:15)"," at process.emit (events.js:198:13)", " 在 process.EventEmitter.emit (domain.js:448:20)"," 在 emitPromiseRejectionWarnings (internal/process/promises.js:140:18)"," 在 process._tickCallback (internal/process/next_tick.js:69:34)"]}
解决方案
除了 /tmp 之外,Lambda 文件系统是只读的 - 您最多可以使用 500mb,不要忘记在不使用时删除文件,如果容器被重用,文件仍然存在并且您将运行随着时间的推移空间不足。
推荐阅读
- python - 你如何合并不同形状的熊猫数据框?
- sql - SQL 语句从右表的多行中获取单个值作为输出中的列
- c# - C#9 中 && 和 and 有什么区别?
- forth - Forth 中的 memset 等价物是什么?
- python - 在 for 循环中添加元素时,集合元素被覆盖
- javascript - 似乎无法访问数组中的对象属性
- c++ - 将 I/O 作为参数传递有什么意义?
- javascript - 检查数组是否除了一个元素 Javascript Dice 之外还有重复项
- flutter - 从 void 调用 ListView
- laravel - 用于输入数组的 Laravel 验证器