Estoy escribiendo un sitio web usando NodeJS y Express. Después de especificar un enlace con 2 parámetros de ruta:
app.get('/game/:port/:player/', function(req, res) { res.sendFile(path.join(__dirname, '/game/game.html')); }) -el resultado es una página en blanco en blanco. Mirando DevTools, vi el error Uncaught SyntaxError: Unexpected token '<' game.js:1 . ¡Parece que el navegador está interpretando el archivo html como un archivo JavaScript! Creo que esto se debe a que el navegador intenta obtener los archivos js y css de /game/(portnumber)/(playernumber) en lugar de /game . Y el css aparece como el archivo HTML real:
Sin embargo, ¡otra ruta que tengo con solo 1 parámetro de ruta funciona bien! Todavía soy relativamente nuevo en Express, por lo que realmente no entiendo cómo funciona la búsqueda de directorios.
¿Hay alguna forma de corregir este error de directorio sin especificar manualmente cada ruta en la que hay archivos HTML?
Puede utilizar el middleware express.static para especificar un directorio público al que sus clientes tengan acceso:
https://expressjs.com/en/starter/static-files.html
app.use('/static', express.static('public')) http://localhost:3000/static/images/kitten.jpg http://localhost:3000/static/css/style.css http://localhost:3000/static/js/app.js http://localhost:3000/static/images/bg.png http://localhost:3000/static/hello.htmlEsto realmente no tiene nada que ver con Express. Es una resolución de URL básica.
El navegador solicitará /game/3561/2 y obtendrá un documento HTML de vuelta
Ese documento le indicará que cargue ./game.js , que se resolverá en /game/3561/game.js (ya que una URL que comienza con . significa "resolver la ruta desde el directorio actual").
Esa no es la URL de su archivo JS, por lo que obtiene un documento HTML en su lugar, donde :player es game.js .
Debe escribir la URL real en su archivo JS en el atributo src .