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
- La opción de
directory
es un prefijo para toda tu ruta. - 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
}));