LoginSignup
1
2

More than 5 years have passed since last update.

koa-routerとkoa-staticでNginxやApacheのaliasみたいな感じで静的ファイルを公開する

Posted at

例えば/static/hoge.pngみたいになURLで配信したい場合に、

.
├── app.coffee
└── static
    └── hoge.png

という構成を取ろうとして

app.coffee
Router = require 'koa-router'
serve = require 'koa-static'

api = new Router
api.get '/static/*', serve './static'

とすると、一見うまく動きそうですが、実際/static/hoge.pngのリクエストを送っても404になってしまいます。実は、このコードだと

.
├── app.coffee
└── static
    └── static
        └── hoge.png

このようにファイルを配置しないと適切にファイルを公開できないのです。要はkoa-staticは単純に指定したディレクトリにHTTPのパスをくっつけることしかしないってことです。

対処法

koa-staticはそのパスをthis.pathから読み取るので、serveの前にthis.pathを書き換えてやるだけです。

app.coffee
api.get '/static/*', (next)->
    parts = @path.split '/'
    parts.splice 1, 1
    @path = parts.join '/'
    yield next
, serve './static'

非常に限局的な話ですが、同じような問題で困った方が居たら参考にしてください。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2