api/subir.js
import formidable from 'formidable'; export const config = { api: { bodyParser: false, }, }; export default async (req, res) => { const form = new formidable.IncomingForm(); form.uploadDir = "./"; form.keepExtensions = true; form.parse(req, (err, fields, files) => { console.log(err, fields, files); res.send(err || "DONE") }); };api/get.js
export default async (_, res) => { const fs = require('fs'); fs.readdir("./", (err, files) => { console.log(err) res.send(err || files) }); }; Todo funciona bien en localhost pero no funciona cuando lo implemento en vercel.
Registro de funciones desde el panel de vercel
[POST] /api/upload 2021-02-21T12:47:11.662Z f7bb8a02-2244-4d27-8a55-9e00a43b307b ERROR Uncaught Exception {"errorType":"Error","errorMessage":"EROFS: read-only file system, open 'upload_2dd906bdebc97a1d63a371c9207b84be.png'","code":"EROFS","errno":-30,"syscall":"open","path":"upload_2dd906bdebc97a1d63a371c9207b84be.png","stack":["Error: EROFS: read-only file system, open 'upload_2dd906bdebc97a1d63a371c9207b84be.png'"]} Unknown application error occurredNecesita un servidor con acceso al sistema de archivos
si funciona en localhost, es porque el modo de aplicación en localhost es dev, y si está en vercel, el modo de aplicación es de producción, por lo que solo depende de la carpeta .next.
si realmente desea intentarlo, intente colocar el archivo de carga en el directorio .next/static, pero aún así no funcionará, con la advertencia de que los archivos en vercel son de solo lectura.
path.resolve('.next','static');tengo el mismo problema, y parece que realmente no puedo agregar archivos en vercel (subir archivos al servidor vercel).
la única forma es crear otro servidor para colocar los archivos cargados. o implemente su aplicación en otro servidor que admita esto.
o también puede usar las recomendaciones de vercel, verifique en https://vercel.com/docs/solutions/file-storage