1
2

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.

Next.js + Typescript で作成したWebアプリをVercelにデプロイした

Last updated at Posted at 2021-12-01

概要

タイトルの通りですが、これまで作成してきたWebアプリをVercelにデプロイして完了したいと思います。

貼り付けた画像_2021_12_01_23_42.png

これまで

Hasuraにユーザーのデータと仮定してデータを作成し

データを外部APIとして取得できるようにして、Next.js(apollo)を使ってgraphQLを通じてHasuraにクエリやミューテーションができるようにしました。

Hasuraから取得したユーザーデータの一覧ページと詳細ページを作りながら、SGISRを学んできました

リファクタリングぽい内容ですが、React customHooks を利用してロジックとUIを切り離すこともやりました。

この記事でデプロイまでを完了させて最終的なゴールを達成したいと思います。

目的(最終的なゴールを達成する)

  • 仕事で使っている技術のキャッチアップと復習
  • 使う可能性がある技術の理解度向上

Hasuraのエンドポイントにアクセスコントロールをつける

これまで使ってきたHasuraのエンドポイントは誰でもアクセス可能な状態です。なので、Vercelデプロイ前にアクセスコントロールをしたいと思います。

JWTトークンを用いた認証もありますが、今回はHasura admin secretのkeyを使った認証をやりたいと思います。

Cursor_と_Projects_-_Hasura_Cloud.png

ENV vars > New Env Varまで行って

_Hasura基礎編__Nextjs_Hasura_Apollo_Clientで学ぶモダンGraphQL_Web開発___Udemy.png

Valueはなんでもいいです。そしてAddをクリックします。Launch Consoleをクリックします。

API_Explorer___Hasura.png

x-hasura-admin-secretがセットされていますね。これが有効になっている限り、APIにアクセスする際にkey: x-hasura-admin-secretとvalue(セットしたヤツ)を合わせないとアクセスできなくなります。

Next.jsでもHasuraから作成した、x-hasura-admin-secretのvalueを環境変数として持たせます。

.env.local
NEXT_PUBLIC_HASURA_KEY="xxxxxxxxxxxxxxxx"
NEXT_PUBLIC_HASURA_URL="https://ryosuketter-hasura-test.hasura.app/v1/graphql"

アクセスする際に、headerにkey: x-hasura-admin-secretの指定が必要なのでセットしましょう。
ついでに、NEXT_PUBLIC_HASURA_URLも環境変数化してます。

valueは.env.localから持ってきます。

lib/apolloClient.ts
const createApolloClient = () => {
  return new ApolloClient({
    ssrMode: typeof window === 'undefined',
    link: new HttpLink({
      uri: process.env.NEXT_PUBLIC_HASURA_URL,
      headers: {
        'x-hasura-admin-secret': process.env.NEXT_PUBLIC_HASURA_KEY,
      },
    }),
    cache: new InMemoryCache(),
  })
}

yarn buildしてyarn startすれば確認できると思います。

Vercelにデプロイ

github上にレポジトリ作成

ローカル上のコードをコミットして、今度はgithub

Cursor_と_Create_a_New_Repository.png

画像の通りじゃなくてもOK。リモートレポジトリ作ってpushしましょう。

Vercel

今度はVercel側に行きます。Githubの認証が終わったらログインできます。

githubと紐づけたら作成したレポジトリと紐づけます。

Cursor_と_New_Project_–_Vercel.png

Vercelはpush(branch: main)したら自動デプロイされるので、その前に動かしたいコマンドを設定します。

テスト書いてたら、テストがパスするかなどもできます(今回はテスト書いてませんが)。

_Hasura基礎編__Nextjs_Hasura_Apollo_Clientで学ぶモダンGraphQL_Web開発___Udemy.png

テスト書いてたら、これを記載してもいいと思います。

yarn testしてパスしたらビルドが走ります。という意味です。

Vercel に 環境変数をセット

ローカルで作成した2つの環境変数をセットしましょう。

Cursor_と_New_Project_–_Vercel.png

Cursor_と_New_Project_–_Vercel.png

では、Deployをクリックします。

スクリーンショット 2021-12-02 1.13.42.png

こんな感じになると思います。デプロイできたらこうなります👇

スクリーンショット 2021-12-02 1.15.07.png

何かしらURLが生成されデプロイできたので、アクセスして今まで作った機能を検証してみてください。

Hasuraとの通信もできていると思います。

また、ユーザーを作成して、SGされたページを見ると、最初は新規作成ユーザーが反映されていなくて、2回目みたら反映されていることを確認できると思います。

:v:

さいごに

下記のような構成を学ぶ旅も本記事で完結です。

image.png

めっちゃ触りだけな内容なので、これから深く学んでいこうと思います。

アウトプット100本ノック実施中

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?