我有以下代码:
app.js
[...]
server.get(/\/docs\/public\/?.*/, restify.serveStatic({
directory: './public'
}));
server.listen(1337, function() {
console.log('%s listening at %s', server.name, server.url);
});
我有以下文件结构
app.js
public/
index.html
所以我尝试浏览:
http://localhost:1337/docs/public/index.html
我得到了
{
code: "ResourceNotFound",
message: "/docs/public/index.html"
}
我尝试了几种变体,但似乎都没有。
我确信它应该是非常明显的我缺少的
答案 0 :(得分:19)
restify
将使用directory
选项作为整个路径路径的前缀。在您的情况下,它会查找./public/docs/public/index.html
。
答案 1 :(得分:8)
directory
选项是整个路径的前缀。解决方案现在变为:
server.get(/\/docs\/public\/?.*/, restify.serveStatic({
directory: __dirname
}));
然后您的静态文件需要位于./docs/public
(__dirname
是一个全局变量,包含您正在运行的脚本的绝对路径)
答案 2 :(得分:5)
根据@ NdeeJim的回答,任何想知道如何提供所有静态资源的人都会这样做:
server.get(/\/?.*/, restify.serveStatic({
directory: __dirname,
default: 'index.html',
match: /^((?!app.js).)*$/ // we should deny access to the application source
}));