我有以下代码:
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"
}
我试过几个变化,但他们都不似乎工作。
我敢肯定,这应该是很明显的我失踪
restify
将使用directory
选项作为整个路由路径的前缀。 根据你的情况,它会寻找./public/docs/public/index.html
。
- 该
directory
选项对于你的整个路径的前缀。 - 相对路径没有的RESTify的更高版本工作正常(我测试2.6.0-3,2.8.2-3 - 他们都产生NotAuthorized错误)
该解决方案现在变成:
server.get(/\/docs\/public\/?.*/, restify.serveStatic({
directory: __dirname
}));
然后你的静态文件需要在./docs/public
。
( __dirname
是包含正在运行的脚本的绝对路径的全局变量)
根据@ NdeeJim的答案,任何人想知道如何为所有的静态资源:
server.get(/\/?.*/, restify.serveStatic({
directory: __dirname,
default: 'index.html',
match: /^((?!app.js).)*$/ // we should deny access to the application source
}));