BETA

Denoを使ってみる2(サンプルのサーバーを実行する)

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

【ローカルサーバーのスクリプトを書く】

以下のコードを任意の場所に作成します。

local_server.js(ファイル名はなんでもいい)

import { serve } from "https://deno.land/[email protected]/http/server.ts";  

const s = serve({ port: 8000 });  

console.log("http://localhost:8000/");  
for await (const req of s) {  
  req.respond({ body: "Hello World\n" });  
}  

 

【さっそく実行してみる】

コンソールを起動し、保存したスクリプトの場所まで移動します。
以下が実行コマンドと実行結果。

$deno run local_server.js  
Download https://deno.land/[email protected]/http/server.ts  
Download https://deno.land/[email protected]/encoding/utf8.ts  
Download https://deno.land/[email protected]/io/bufio.ts  
Download https://deno.land/[email protected]/_util/assert.ts  
Download https://deno.land/[email protected]/async/mod.ts  
Download https://deno.land/[email protected]/http/_io.ts  
Download https://deno.land/[email protected]/bytes/mod.ts  
Download https://deno.land/[email protected]/textproto/mod.ts  
Download https://deno.land/[email protected]/http/http_status.ts  
Download https://deno.land/[email protected]/async/deferred.ts  
Download https://deno.land/[email protected]/async/delay.ts  
Download https://deno.land/[email protected]/async/mux_async_iterator.ts  
Download https://deno.land/[email protected]/async/pool.ts  
Check file:///home/ユーザー/deno_dev/project_001/local_server.js  
error: Uncaught PermissionDenied: network access to "0.0.0.0:8000", run again with the --allow-net flag  
    at unwrapResponse (rt/10_dispatch_json.js:24:13)  
    at sendSync (rt/10_dispatch_json.js:51:12)  
    at opListen (rt/30_net.js:33:12)  
    at Object.listen (rt/30_net.js:204:17)  
    at serve (server.ts:287:25)  
    at file:///home/ユーザー/deno_dev/project_001/local_server.js:2:11  

エラーが出る。

【セキュリティについて】

Denoはセキュリティの標準機能としてファイル、ネットワーク、環境変数などにアクセスできないようになっています。アクセスするには許可を与えてあげないといけません。

上記のログに「run again with the --allow-net flag」とあるように「--allow-net」フラグを付けて再度実行してみます。

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

 
今度はエラーも出ずにサーバーが実行状態になりました。
(最初にrunしたときに出たDownload群は最初だけ。2回目以降は出ない。)

【ブラウザから確認】

ブラウザからlocalhost:8000にアクセスして確認します。

Hello Worldが表示されればOKです。

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

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

@jokerの技術ブログ

よく一緒に読まれる記事

0件のコメント

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