skeleton node log framework createserver node.js http restify

log - sirviendo archivos estáticos con restify(node.js)



restify vs express (3)

restify usará la opción de directory como un prefijo para toda la ruta de ruta . En su caso, buscará ./public/docs/public/index.html .

Tengo el siguiente código:

app.js

[...] server.get(///docs//public//?.*/, restify.serveStatic({ directory: ''./public'' })); server.listen(1337, function() { console.log(''%s listening at %s'', server.name, server.url); });

Y tengo la siguiente estructura de archivos

app.js public/ index.html

Entonces intento navegar:

http://localhost:1337/docs/public/index.html

y obtengo

{ code: "ResourceNotFound", message: "/docs/public/index.html" }

Intenté con varias variaciones, pero ninguna de ellas pareció funcionar.

Estoy seguro de que debería ser algo bastante obvio que me falta


  1. La opción de directory es un prefijo para toda tu ruta.
  2. Las rutas relativas no funcionan correctamente en las versiones posteriores de Restify (he probado 2.6.0-3, 2.8.2-3 y todas ellas producen el error No autorizado)

La solución ahora se convierte en:

server.get(///docs//public//?.*/, restify.serveStatic({ directory: __dirname }));

Y luego sus archivos estáticos deberán estar en ./docs/public .
( __dirname es una variable global que contiene la ruta absoluta del script que está ejecutando)


Basado en la respuesta de @ NdeeJim, a cualquiera que se pregunte cómo servir TODOS los recursos estáticos:

server.get(///?.*/, restify.serveStatic({ directory: __dirname, default: ''index.html'', match: /^((?!app.js).)*$/ // we should deny access to the application source }));