Tengo un NodeJS SPA con un comportamiento extraño y para eso DEBO usar "fuerza bruta" para hacer que express.static()
funcione:
app.use('*/images', express.static(path.join(__dirname + '/public/images')));
Ahora estoy enfrentando un problema en otra URL que debo hacer un pedido POST:
En el punto rojo: Error al cargar el recurso: el servidor respondió con un estado de 404 ()
Ese es el archivo server.js:
// Load Node modules var express = require('express'); const bodyParser = require('body-parser'); const path = require('path'); const ejs = require('ejs'); var falaUser = require('./routes/falaUser'); (...) // Render static files app.use(bodyParser.json()); app.use('*/images', express.static(path.join(__dirname + '/public/images'))); app.use('*/js', express.static(path.join(__dirname + '/public/js'))); app.use('*/css', express.static(path.join(__dirname + '/public/css'))); app.use('*/slick-1.8.1', express.static(path.join(__dirname + '/public/slick-1.8.1'))); app.use('*/falauser', falaUser); (...) // Root Route app.get('/strapiClient/', function (req, res) { res.render('pages/index'); });
Ese es el archivo de ruta falaUser.js:
const express = require('express'); const router = express.Router(); const axios = require('axios'); var config = require("config"); router.post('/strapiClient', function (req, res, next) { console.log(req.body); axios .post(config.get("botUrl"), req.body ) .then((dataBot) => { console.log(dataBot.data.responses); res.json({ "responses": dataBot.data.responses }); }) .catch((error) => { console.error(error); res.status(500).json(error); }) });
El resultado de .catch(error)
es SyntaxError: token inesperado < en JSON en la posición 0
Para asegurarme de que el problema se debe al enrutamiento, probé con una solicitud GET, poniendo este código en falaUser.js:
router.get('/strapiClient', function (req, res) { res.json({ fruta: 'lichia' }); });
Y tuve el error "Cannot GET /strapiClient/falauser"...
¿Alguna pista sobre cómo profundizar en él?
La página está aquí , si quieres echarle un vistazo: ve al final de la página y escribe "opa" en el área del chatbot.
app.use("/path1", router.post("/path2", ...))
solo coincide con las POST /path1/path2
. En su caso, path2 = "strapiClient"
, por lo tanto, la URL POST debe terminar con /strapiClient
y POST /strapiClient/falauser
no coincide.
Consulte la siguiente oración en la documentación del Router
:
La ruta de "montaje" se elimina y no es visible para la función de middleware. El principal efecto de esta característica es que una función de middleware montada puede operar sin cambios de código, independientemente de su nombre de ruta de "prefijo".