Quiero servir index.htmly /mediasubdirectorio como archivos estáticos. El archivo de índice se debe servir tanto a /index.htmly/ direcciones URL.
yo tengo
web_server.use("/media", express.static(__dirname + '/media'));
web_server.use("/", express.static(__dirname));
pero la segunda línea aparentemente sirve la totalidad __dirname, incluidos todos los archivos (no solo index.htmly media), que no quiero.
También intenté
web_server.use("/", express.static(__dirname + '/index.html'));
pero acceder a la URL base /lleva a una solicitud de web_server/index.html/index.html(dobleindex.html componente), que por supuesto falla.
¿Algunas ideas?
Por cierto, no pude encontrar absolutamente ninguna documentación en Express sobre este tema ( static()+ sus parámetros) ... frustrante. Un enlace de documento también es bienvenido.

express.static()se maneja mediante elserve-staticpaquete de middleware. puede encontrar sus documentos en npmjs.com/package/serve-static o github.com/expressjs/serve-static .Respuestas:
express.static()espera que el primer parámetro sea una ruta de un directorio, no un nombre de archivo. Sugeriría crear otro subdirectorio para contener suindex.htmly usar eso.Sirviendo archivos estáticos in exprés documentación , o más detallada
serve-staticdocumentación , incluyendo el comportamiento predeterminado de servirindex.html:fuente
express.staticespera que ese parámetro sea la ruta ...Si tienes esta configuración
Entonces esto debería obtener lo que querías
El truco es dejar esta línea como último recurso
En cuanto a la documentación, dado que Express usa el middleware de conexión, me resultó más fácil mirar directamente el código fuente de conexión.
Por ejemplo, esta línea muestra que index.html es compatible https://github.com/senchalabs/connect/blob/2.3.3/lib/middleware/static.js#L140
fuente
Application.configure()fue documentado como legado en 3.xy eliminado en 4.x. Vea la respuesta de ChrisCantrell para un ejemplo actualizado.__dirname? ¿Cuál es su valor?En la versión más nueva de express, el "createServer" está en desuso. Este ejemplo me funciona:
fuente
__file__que se usaos.path.dirname(os.path.realpath(__file__))public/teams/logo.png?res.sendFileyexpress.staticambos trabajarán para esto¿Dónde
publicestá la carpeta en la que está el código del lado del cliente?Según lo sugerido por @ATOzTOA y aclarado por @Vozzie ,
path.jointoma los caminos para unirse como argumentos,+pasa un solo argumento al camino.fuente
path.jointoma las rutas para unirse como argumentos,+pasa un solo argumento a la ruta.path.join(public + 'index.html')apath.join(public, 'index.html')Y mientras lo__dirname + "/public/"path.join(__dirname, 'public')fuente
fuente
use a continuación dentro de su app.js
(folderName es la carpeta que tiene archivos): recuerde que se accede a estos activos directamente a través de la ruta del servidor (es decir, http: // localhost: 3000 / abc.png (donde abc.png está dentro de la carpeta folderName)
fuente