服务与的RESTify静态文件(node.js中)(serving static files wit

2019-08-17 16:49发布

我有以下代码:

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"
}

我试过几个变化,但他们都不似乎工作。

我敢肯定,这应该是很明显的我失踪

Answer 1:

restify将使用directory选项作为整个路由路径的前缀。 根据你的情况,它会寻找./public/docs/public/index.html



Answer 2:

  1. directory选项对于你的整个路径的前缀。
  2. 相对路径没有的RESTify的更高版本工作正常(我测试2.6.0-3,2.8.2-3 - 他们都产生NotAuthorized错误)

该解决方案现在变成:

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

然后你的静态文件需要在./docs/public
__dirname是包含正在运行的脚本的绝对路径的全局变量)



Answer 3:

根据@ NdeeJim的答案,任何人想知道如何为所有的静态资源:

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


文章来源: serving static files with restify (node.js)