在cyclic.sh上运行快递服务器时,无法从UI上传文件。
使用mkdirp模块在heroku上使用相同的代码。https://www.npmjs.com/package/mkdirp
获取以下错误:
2022-11-23 14:04:30.748: /var/task/node_modules/multer/node_modules/mkdirp/index.js:91
throw err0;
^
Error: EROFS: read-only file system, mkdir '/var/task/public/uploads'
at Object.mkdirSync (node:fs:1349:3)
at sync (/var/task/node_modules/multer/node_modules/mkdirp/index.js:72:13)
at Function.sync (/var/task/node_modules/multer/node_modules/mkdirp/index.js:78:24)
at new DiskStorage (/var/task/node_modules/multer/storage/disk.js:21:12)
at module.exports (/var/task/node_modules/multer/storage/disk.js:65:10)
at new Multer (/var/task/node_modules/multer/index.js:15:20)
at multer (/var/task/node_modules/multer/index.js:95:12)
at Object.<anonymous> (/var/task/routes/cards.js:29:16)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (/var/task/server.js:40:20)
at Module._compile (node:internal/modules/cjs/loader:1105:14) {
errno: -30,
syscall: 'mkdir',
code: 'EROFS',
path: '/var/task/public/uploads'
}
2022-11-23 14:04:30.765:
ERROR: Failed to run "npm run start". Start script defined in package.json:
"scripts": {
"start": "node server.js"
...
Exited with code: 1代码在本地工作,并在消除免费层之前对heroku进行工作。
发布于 2022-11-28 15:43:23
循环是建立在无服务器技术(AWS Lambda)之上的,这使得文件系统成为只读的。唯一可写的目录是/tmp。但是,由于lambda的实例可以在任何时候关闭/回收,因此不应该将其用于永久存储。
要永久地写入文件,可以写入集成的S3存储桶,或者为用户提供一个他们可以将文件上传到的预先签名的URL。
有关使用无服务器基础结构的文件上载的更多信息,请参见docs:https://docs.cyclic.sh/serverless/stateless#file-upload
https://stackoverflow.com/questions/74602986
复制相似问题