Mi aplicación express funciona bien en localhost pero no funciona en Heroku. Cuando agregué una línea, deja de funcionar y
la línea es
app.use("/api/product", require("./routes/product"))
Aquí está el código Index.js
const express = require("express"); const app = express(); const port = process.env.PORT || 5000; app.get("/", (req, res) => { res.send("responded") }); app.use(express.json()) app.use("/api/product", require("./routes/product")) app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`); });
producto.js
const express = require("express"); const router = express.Router(); router.get("/", async (req, res) => { try { res.json({ status: 200, message: "Data has been successfully fetched" }); } catch (error) { console.log(error); return res.status(400).send("server error") } }) module.exports = router;
paquete.json
{ "name": "backend-test", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.17.3" } }
Estructura de carpetas
Querrías cambiar el lugar de tus controladores de ruta. De lo contrario, nunca enriquecerá su API, ya que la primera captura todas las solicitudes.
const express = require("express"); const app = express(); const port = process.env.PORT || 5000; app.use(express.json()) app.use("/api/product", require("./routes/product")) app.get("/", (req, res) => { res.send("responded") }); app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`); });