¿Existe una herramienta lista para usar Node.js (instalada con npm
), que me ayudaría a exponer el contenido de la carpeta como servidor de archivos a través de HTTP.
Ejemplo, si tengo
D:\Folder\file.zip
D:\Folder\file2.html
D:\Folder\folder\file-in-folder.jpg
Luego, comenzando D:\Folder\
node node-file-server.js
, pude acceder al archivo a través de
http://hostname/file.zip
http://hostname/file2.html
http://hostname/folder/file-in-folder.jpg
¿Por qué mi servidor de archivos estáticos de nodo descarta las solicitudes? referencia alguna mística
servidor de archivos estático node.js estándar
Si no existe tal herramienta, ¿qué marco debo usar?
Relacionado: Servidor de archivos estático básico en NodeJS
node.js
http
fileserver
Paul Verest
fuente
fuente
Respuestas:
Una buena opción de "herramienta lista para usar" podría ser http-server:
Para usarlo:
O así:
Compruébalo: https://github.com/nodeapps/http-server
fuente
http-server -a localhost
tengo er dun.http-server -a localhost -p 80
--cors
enviarAccess-Control-Allow-Origin:*
junto con los encabezados de respuesta (es decir, cuando se sirve un archivo json)npx http-server
- npx lo convierte en una línea que descarga los archivos necesarios y lo ejecuta.Si no desea usar la herramienta ready, puede usar el código a continuación, como lo demostré en https://developer.mozilla.org/en-US/docs/Node_server_without_framework :
ACTUALIZACIÓN Si necesita acceder a su servidor desde una demanda / archivo externo, debe superar el CORS, en su archivo node.js escribiendo lo siguiente, como mencioné en una respuesta anterior aquí
ACTUALIZAR
Como mencionó Adrian, en los comentarios, escribió un código ES6 con una explicación completa aquí , solo volví a publicar su código a continuación, en caso de que el código haya desaparecido del sitio original por algún motivo:
fuente
response.writeHead(200
debería serresponse.writeHead(404
;)../../etc/password
cosas. gist.github.com/amejiarosario/53afae82e18db30dadc9bc39035778e5pathname = pathname.replace(/^(\.)+/, '.');
Para las personas que desean un servidor ejecutable desde el script NodeJS:
Puede usar expressjs / serve-static que reemplaza
connect.static
(que ya no está disponible a partir de connect 3):myapp.js:
y luego desde la línea de comando:
$ npm install finalhandler serve-static
$ node myapp.js
fuente
npm install filehandler
y el paquete aparece en elnode_modules
directorio. Pero cuando ejecuto elmyapp.js
nodo arroja un error, diciendoError: cannot find module filehandler
. Si comento el requisito de cargar el controlador de archivos, la aplicación carga serve-static muy bien, por lo que parece que hay algo mal con el paquete de controlador de archivos. Hoy es 12 de diciembre de 2014, ¿quizás el paquete ha cambiado desde que se publicó esta respuesta?final
controladorfile
Sé que no es Node, pero he usado el SimpleHTTPServer de Python:
Funciona bien y viene con Python.
fuente
python -m http.server [port]
(el mencionado es para Python2)php -S localhost:8000
conectar podría ser lo que estás buscando.
Instalado fácilmente con:
Entonces el servidor de archivos estático más básico podría escribirse como:
fuente
connect.static
; vea mi respuesta a continuación para un reemplazorequire
módulo capaz separado "serve-static".Instale express usando npm: https://expressjs.com/en/starter/installing.html
Cree un archivo llamado server.js en el mismo nivel de su index.html con este contenido:
Si desea colocarlo en una ubicación diferente, configure la ruta en la tercera línea:
CD a la carpeta que contiene su archivo y ejecute el nodo desde la consola con este comando:
Navegar hasta localhost: 8080
fuente
Cannot GET /
. Yo uso AWS EC2 para ejecutar el servidor.path.join(__dirname, 'public')
Es más multiplataforma.Pruebas One-line ™ en lugar de promesas
El primero es
http-server
,hs
- enlaceEl segundo es
serve
por ZEIT.co - enlaceLas siguientes son opciones disponibles, si esto es lo que le ayuda a decidir.
Si necesita ver los cambios, vea
hostr
, acredite la respuesta de Henry Tsengfuente
SERVIDOR DEMO / PROTO SOLAMENTE
Si eso es todo lo que necesitas, prueba esto:
nota: debe usar "/index.html" como parte de su dirección, es decir, " http: // localhost: 3000 / index.html "
fuente
index.html
como parte de su dirección, simplemente agregueif (req.url === '/') req.url = '/index.html';
justo despuésres.writeHead(200);
.const stream = fs.createReadStream(...); stream.pipe(res);
es todo lo que necesitasHay otro servidor web estático que es bastante agradable: sincronización de navegador.
Se puede descargar usando el administrador de paquetes de nodos:
Después de la instalación, navegue a la carpeta del proyecto en el indicador de cmd y simplemente ejecute lo siguiente:
Comenzará a atender todos los archivos en la carpeta actual en el navegador.
Se puede encontrar más información desde BrowserSync
Gracias.
fuente
--files
cambio de pabellón (nota: no es necesario especificar../*
- sólo los que desee Browsersync para ver de forma activa para las actualizaciones, por ejemplo, .css/*.css
)No he tenido mucha suerte con ninguna de las respuestas en esta página, sin embargo, a continuación, parecía ser el truco.
Agregue un
server.js
archivo con el siguiente contenido:También asegúrese de que lo requiera
express
. Correryarn add express --save
onpm install express --save
dependiendo de su configuración (puedo recomendaryarn
que es bastante rápido).Usted puede cambiar
dist
a la carpeta en la que está sirviendo su contenido. Para mi proyecto simple, no estaba sirviendo desde ninguna carpeta, así que simplemente eliminé eldist
nombre del archivo.Entonces puedes correr
node server.js
. Como tenía que cargar mi proyecto en un servidor Heroku, necesitaba agregar lo siguiente a mipackage.json
archivo:fuente
Si usa el marco Express , esta funcionalidad viene lista para usar .
Para configurar una aplicación de servicio de archivos simple, simplemente haga esto:
fuente
Aquí está mi proyecto de mascota de servidor web de un solo archivo / peso ligero node.js sin dependencia que creo que es una herramienta rápida y rica cuyo uso es tan fácil como emitir este comando en su terminal Linux / Unix / macOS ( o termux en Android) cuando node.js (o
nodejs-legacy
en Debian / Ubuntu) está instalado:(existen diferentes comandos para usuarios de Windows en la documentación)
Admite diferentes cosas que creo que pueden ser útiles,
curl pad.js.org | node - -h
[sudo] npm install -g pad.js
y luego use su versión instalada para tener acceso a sus opciones:pad -h
[sudo] docker run --restart=always -v /files:/files --name pad.js -d -p 9090:9090 quay.io/ebraminio/pad.js
Las características descritas anteriormente están documentadas principalmente en la página principal de la herramienta http://pad.js.org que por algún buen truco que utilicé también es el lugar desde el que también se sirve la fuente de la herramienta.
La fuente de la herramienta está en GitHub, que agradece sus comentarios, solicitudes de funciones y ⭐s.
fuente
Desde [email protected],
npm
comencé a instalar un nuevo binario junto con el npm habitual llamadonpx
. Así que ahora, uno se alinea para crear un servidor http estático desde el directorio actual:o
fuente
Para un aumento saludable del rendimiento usando el nodo para servir recursos estáticos, recomiendo usar Buffet . Funciona de manera similar a un acelerador de aplicaciones web, también conocido como proxy inverso HTTP en caché, pero solo carga el directorio elegido en la memoria.
Lo usamos en el sitio codePile y encontramos un aumento de ~ 700 solicitudes / seg a> 4k solicitudes / seg en una página que descarga 25 recursos bajo una carga de conexión de usuario concurrente de 1k.
Ejemplo:
fuente
Echa un vistazo a ese enlace .
Solo necesita instalar el módulo express de
node js
.Puede acceder a su archivo como http: //hostname/Folder/file.zip
fuente
A continuación funcionó para mí:
Cree un archivo
app.js
con los siguientes contenidos:Cree un archivo
index.html
con los siguientes contenidos:Comience una línea de comando:
Ejecutar a continuación en
cmd
:Ir a la URL debajo, en cromo:
Eso es todo. Espero que ayude.
Fuente: https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/
fuente
Puedes intentar servirme
Usarlo es muy fácil:
Eso es todo.
PD: la carpeta que se sirve de forma predeterminada es "pública".
fuente
Aquí hay otro servidor web simple.
https://www.npmjs.com/package/hostr
Instalar en pc
Cambiar director de trabajo
Y empezar
fuente
En simple node.js:
Este es un servidor simple de node.js que solo sirve archivos solicitados en un determinado directorio.
Uso:
folder
puede ser absoluto o relativo según laserver.js
ubicación. El valor predeterminado es.
cuál es el directorio que ejecuta elnode server.js
comando.port
es 8080 de forma predeterminada, pero puede especificar cualquier puerto disponible en su sistema operativo.En su caso, yo haría:
Puede explorar los archivos
D:\Folder
desde un navegador escribiendohttp://127.0.0.1:8080/somefolder/somefile.html
fuente
Todavía no está en NPM, pero construí un servidor estático simple en Express que también le permite aceptar envíos de formularios y enviarlos por correo electrónico a través de un servicio de correo electrónico transaccional (Sendgrid por ahora, Mandrill viene).
https://github.com/jdr0dn3y/nodejs-StatServe
fuente
Para beneficio de los buscadores, me gustó la respuesta de Jakub g, pero quería un pequeño manejo de errores. Obviamente, es mejor manejar los errores correctamente , pero esto debería ayudar a evitar que un sitio se detenga si se produce un error. Código a continuación:
fuente
Primero instale el servidor nodo-estático a través de
npm install node-static -g
-g para instalarlo globalmente en su sistema, luego navegue al directorio donde se encuentran sus archivos, inicie el servidor constatic
él escucha en el puerto 8080, navegue al navegador y escriba localhost: 8080 / yourhtmlfilename .fuente
Puede usar el paquete de servicio NPM para esto, si no necesita el material NodeJS, es una herramienta rápida y fácil de usar:
1 - Instala el paquete en tu PC:
2 - Sirve tu carpeta estática con
serve <path>
:Le mostrará en qué puerto se está sirviendo su carpeta estática, solo navegue hasta el host como:
fuente
npm
es el administrador de paquetes de nodos, así que de hecho estás usando las cosas deBuscando en el registro NPM https://npmjs.org/search?q=server , he encontrado el servidor estático https://github.com/maelstrom/static-server
Eso incluso podría enumerar el contenido de la carpeta.
Desafortunadamente, no pudo servir archivos :)
fuente
Un servidor estático simple usando connect
Consulte también Uso de node.js como un servidor web simple
fuente
Para el trabajo de desarrollo, puede usar (express 4) https://github.com/appsmatics/simple-httpserver.git
fuente
fuente
Si está interesado en un servidor http ultraligero sin ningún requisito previo, debería echar un vistazo a: mangosta
fuente
Uso Houston en el trabajo y para proyectos personales, me funciona bien.
https://github.com/alejandro/Houston
fuente
También preguntó por qué están cayendo las solicitudes: no estoy seguro de cuál es la razón específica de su caso, pero en general, mejor contenido estático del servidor utilizando middleware dedicado (nginx, S3, CDN) porque Node no está realmente optimizado para este patrón de red. Vea más explicaciones aquí (punto 13): http://goldbergyoni.com/checklist-best-practice-of-node-js-in-production/
fuente