BETA

Denoを使ってみる3(htmlファイルを読み込んで返す)

投稿日:2020-09-14
最終更新:2020-09-14

【htmlファイルを読み込んで返すように変更する】

前回は「Hello, world」直打ちでしたので、htmlファイルを取得して表示するように変更したいと思います。

import { serve } from "https://deno.land/[email protected]/http/server.ts"  
const s = serve({ port: 8000 });  
const index_file = await Deno.open("./index.html");  
console.log("http://localhost:8000/");  

for await (const req of s) {  
    req.respond({ body: index_file });  
}  

変数index_fileに読み込んだindex.htmlの内容を格納して、Hello, world直打ちになってたrespondのbodyにセットしています。

【htmlファイルを用意】

テストなので、簡単な内容です。

index.html

<h1>Hello, world</h1>  

とりあえずこれだけです。

【実行してみる】

早速変更したjsを実行してみます。

$deno run --allow-net local_server.js  
Check file:///home/ユーザー/deno_dev/project_001/local_server.js  
http://localhost:8000/  
error: Uncaught PermissionDenied: read access to "./index.html", run again with the --allow-read flag  
    at unwrapResponse (rt/10_dispatch_json.js:24:13)  
    at sendAsync (rt/10_dispatch_json.js:75:12)  
    at async Object.open (rt/30_files.js:45:17)  
    at async file:///home/ユーザー/deno_dev/project_001/local_server.js:4:20  

エラーが出ました。前回はネットにアクセスするフラグが無いと怒られましたが、今回はファイルを読み込むフラグが無いと怒られました。

【フラグを追加して再度実行】

errorにある通り「--allow-read」を追加してコマンドを実行します。

$ deno run --allow-net --allow-read local_server.js  
Check file:///home/ユーザー/deno_dev/project_001/local_server.js  
http://localhost:8000/  

動きましたね。

【ブラウザから結果を確認する】
ブラウザから「http://localhost:8000」にアクセスします。
h1タグでHello, worldが表示されればOKです。

ブラウザでソースを確認してみます。

h1タグしかないので、赤くエラー表示になってますが、htmlとして認識されています。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@jokerの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう