Tengo una configuración de base de datos de archivo plano JSON realmente simple que funciona cuando se ejecuta localmente pero no funciona una vez que está alojado en Netlify. No recibo ninguna otra información de error además de un error 500 en el servidor. Recibo el error incluso si todo lo que hago es importar el objeto clusterDB , por lo que algo sucede con el objeto lowdb. También intenté usar otra biblioteca json db llamada StormDB y tengo el mismo problema.
Devolver mi ruta API con una importación estática del archivo json (sin bibliotecas db) también funciona bien.
Soy nuevo en Next.js y esto parece estar relacionado con la parte de SSR, ya que las rutas API se ejecutan solo en el servidor. ¿Necesito estructurar mis archivos de manera diferente? ¿Estas bibliotecas no son compatibles? Lowdb dice que funciona con Node, y todo funciona localmente para mí.
Aquí está mi archivo de inicio de db (root/db/db.js)
import {Low, JSONFileSync} from 'lowdb' // Cluster DB Setup const adapter = new JSONFileSync('cluster-db.json') const clusterDB = new Low(adapter) // Initialize if empty clusterDB.read() clusterDB.data ||= { clusters: [] } clusterDB.write() export {clusterDB}Y mi única ruta API (root/pages/api/clusters.js)
import {clusterDB} from '../../db/db' export default async function handler(req, res) { await clusterDB.read() switch(req.method) { case 'POST': let newCluster = {severity: req.query.severity, comments: req.query.comments, date: req.query.date} clusterDB.data.clusters.push(newCluster) clusterDB.write() res.status(200).json({status: "Success", cluster: newCluster}) break; case 'GET': if(clusterDB.data.clusters) { res.status(200).json(clusterDB.data.clusters) } else { res.status(404).json({status: "404"}) } break; } res.status(200).json({test: "yay"}) }