回答編集履歴

1

深夜のノリで書いた回答が言葉足らずだったので肉付け

2021/08/26 04:16

投稿

miyabi-sun
miyabi-sun

スコア21194

test CHANGED
@@ -2,9 +2,43 @@
2
2
 
3
3
 
4
4
 
5
- Expressは記述したURLでしかファイルを配信しません。
5
+ Expressはコードで指定したURLでしかファイルを配信しません。
6
6
 
7
+ 勝手にディレクトリや画像ファイルを追加したからといって、
8
+
7
- 当然静的ファイルなんて配信してくれる訳ではありません。
9
+ プログラマの要望を汲み取っ勝手に配信してくれる訳ではありません。
10
+
11
+
12
+
13
+ 逆に言うと「そのようにコードを記述すれば」ファイルを配信できるようになります。
14
+
15
+ 今回はavatarsディレクトリに入っている画像ファイルを配信したいよという要望ですね。
16
+
17
+ こういう既に出来上がっている画像ファイル等は「静的ファイル」と呼びます。
18
+
19
+
20
+
21
+ 静的ファイルの逆は「動的ファイル」です。
22
+
23
+ Node.jsやPHP等でHTTPリクエストを受け取ってからデータベース等の情報を引っ張ってきて、
24
+
25
+ 可変のデータ(HTMLファイルやJSON)を作って返すものを指します。
26
+
27
+ (ファイルとして存在してないじゃん、動的コンテンツと呼ぶべき?まぁいいや)
28
+
29
+
30
+
31
+ Express自体に使うかどうか分からない機能をゴテゴテ入れまくると処理が増えて重くなります。
32
+
33
+ なので処理を削って高速にしたい事から必要最低限の機能しか実装していません。
34
+
35
+
36
+
37
+ でも静的ファイルを配信したいという需要は沢山あります。
38
+
39
+ Expressにはミドルウェアという考え方があり、
40
+
41
+ 例えば「静的ファイルを配信したい人はこの機能を組み込めばすぐ使えますよ」という備えがあります。
8
42
 
9
43
 
10
44
 
@@ -12,7 +46,11 @@
12
46
 
13
47
 
14
48
 
49
+ 質問文のディレクトリ構造を見る限り、app.jsにWebサーバとしての機能があるんでしょうね。
50
+
51
+ app.jsはプロジェクトルートなので`__dirname + '/avatars'`で良いかな?
52
+
15
- app.jsにExpressの設定が記述されているならこれを追加てください
53
+ Expressの設定が記述されているならこの1行で解決するでょう
16
54
 
17
55
 
18
56
 
@@ -84,7 +122,9 @@
84
122
 
85
123
 
86
124
 
87
- こんとこで
125
+ 上記が改良案とります。
126
+
127
+
88
128
 
89
129
  恐らくpackage.jsonに書かれたnpm-scriptsの難易度的に
90
130