0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

vue-cliで作成したNetlify Functionsのローカルでの検証環境の注意点

Posted at

Netlify Functions利用することで、サーバーレスアプリケーションを構築できる。JavaScriptとGoで構築が可能だが、この記事ではJavaScriptのみ説明する。

なおNetlify Functionsは、デフォルトではURLがわかれば、誰でもアクセスできてしまう。アクセスを制限したい場合にはNetlify Identityによる認証などを検討する。

作成したプログラムのテストのときに、プログラムを修正するたびにNetlify環境に適用していては、こまめなテストが難しくなる。そのためNetlify Functionsにはローカル環境でテストをするためのパッケージ(netlify-lambda)が用意されている。このパッケージをインストールすると、ローカル環境でNetlify Functionsが実行できる。

Netlifyのサイトとローカル環境との違いを説明する。

ポート番号が違うことによるCORS違反

Netlifyのサイトとローカル環境では、webページとファンクションのURLの関係に違いがある。下の表の例のwebページはvue-cliで作成している。ポートはデフォルトとする。

webページのURL ファンクションのURL
Netlifyサイト https://サイト名.netlify.app https://サイト名.netlify.app/.netlify/functions/ファンクション名
ローカル環境 http://localhost:8080 http://localhost:9000/.netlify/functions/ファンクション名

Netlify環境ではwepページのURLとファンクションのURLは同じポートである。

ローカルでのテスト環境では、webページとファンクションは別のプログラム(vue-cli-service serveとnetlify-lambda serve)で処理されるため、別のポートを利用する。そのため、webページのJavaScriptからファンクションにアクセスするとCORS違反になる。テスト環境ではレスポンスのヘッダに適切なAccess-Control-Allow-Origin属性を設定する必要がある。

レスポンスのヘッダのエラー処理

レスポンスのヘッダには、正しくはオブジェクトを設定する。空の場合には{}である。これを誤って空のリスト[]を設定すると、ローカル環境ではエラーにならないが、Netlify環境ではステータスコードが502を返すという、非常に原因がわかりにくいエラーになる。

0
0
3

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?