web-dev-qa-db-ja.com

restifyで静的ファイルを提供する(node.js)

私は次のコードを持っています:

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

いくつかのバリエーションを試してみましたが、どれもうまくいかなかったようです。

私はそれが私が行方不明になっているかなり明白な何かであるはずだと確信しています

24
opensas

restifyは、ルートパス全体のプレフィックスとしてdirectoryオプションを使用します。あなたの場合、それは./public/docs/public/index.htmlを探します。

20
robertklep

@NdeeJimの回答に基づいて、すべての静的リソースを提供する方法を疑問に思っている人へ:

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