24

次のコードがあります。

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

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

私はそれがかなり明白なものであるべきだと確信しています

4

3 に答える 3

20

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

于 2013-03-17T17:53:50.510 に答える
8
  1. このdirectoryオプションは、パス全体のプレフィックスです。
  2. それ以降のバージョンの Restify では相対パスが正しく機能しません (2.6.0-3、2.8.2-3 をテストしましたが、すべて NotAuthorized エラーが発生します)。

解決策は次のようになります。

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

そして、静的ファイルは./docs/public.
(__dirnameは、実行中のスクリプトの絶対パスを含むグローバル変数です)

于 2014-11-22T09:59:11.107 に答える
6

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

server.get(/\/?.*/, restify.plugins.serveStatic({
            directory: __dirname,
            default: 'index.html',
            match: /^((?!app.js).)*$/   // we should deny access to the application source
     }));
于 2015-09-30T22:04:12.983 に答える