Medusa+Next.js+SupabaseでECサイト作る。今すぐにだ
公式ドキュメント読む。
まずは以下のコマンドでcreate appする
npx create-medusa-app@latest --with-nextjs-starter --skip-db
コマンドオプションは以下。今回はdb周りを後でやるので--skip-db
をつける
-
--repo-url <url>
: プロジェクトを作成するリポジトリのURL。デフォルトだとhttps://github.com/medusajs/medusa-starter-default -
--seed
: データベースにデモ・データをシードすべきかどうかを示すフラグ。デフォルトでは、シードは無効 -
--no-boilerplate
: src/admin、src/api以下のファイルなどを削除するフラグ。これはクリーンなプロジェクトを作成したい場合に便利で、Medusaに慣れている場合にのみ推奨されるみたい。 -
--no-browser
: プロジェクト作成終了時にブラウザを開かず、成功メッセージのみを表示する。 -
--skip-db
: データベースの作成、マイグレーションの実行、シーディングをスキップし、その後ブラウザを開くのをスキップする。 -
--db-url <url>
: データベースの作成をスキップし、データベースの URL を指定された URL に設定する。データベースへの接続に失敗した場合はエラーをスロー。プロジェクト作成後もマイグレーションを実行し、管理画面を開く。ローカルまたはリモートですでにデータベースを作成している場合に使える -
--no-migrations
: マイグレーションの実行、管理ユーザーの作成、シーディングをスキップする。使用する場合は、--db-urlオプションに、必要なマイグレーションをすべて持っているデータベースのURLを渡さないとエラーが出る -
--directory-path <path>
: 新規プロジェクトのディレクトリを作成する親ディレクトリのパスを指定可能 -
--with-nextjs-starter
:<PROJECT_NAME>-storefront
ディレクトリにNext.jsスターターのスターターストアをインストールする。
やっぱり最初にDBあったほうが楽そうだから作り直す
まずsupabaseで新しいプロジェクトを作成してpostgresqlのURIを取得する
npx create-medusa-app@latest --db-url <取得したurl> --with-nextjs-starter
で再度ディレクトリ作成を試みる
? What's the name of your project? my-medusa-store
? Enter an email for your admin dashboard user admin@medusa-test.com
この質問たちはデフォルト値でいいのでEnter^2
メモ:2回バグが出たのとその解決法
一個め
Couldn't connect to PostgreSQL using the database URL you passed. Make sure it's correct and try again.
パスワードは合っているはずなのに…と思いながら以下のstackoverflowを見ると、supabaseのプロジェクト作成時に使用したパスワードに#などの特殊文字を含んでいたのが原因のよう。プロジェクトを作り直し、パスワードを数字とアルファベットのみのものに変更して解決
2個め
コマンドを以下のように--repo-url
オプションをつけて実行したところ。。。
npx create-medusa-app@latest --db-url <取得したurl> --with-nextjs-starter --repo-url <githubのurl>
以下のエラーが出た
? What's the name of your project? my-medusa-store
? Enter an email for your admin dashboard user admin@medusa-test.com
🚀 Starting project setup, this may take a few minutes.
✔ Created project directory
✔ Installed Next.js Starter successfully in the my-medusa-store-storefront directory.
An error occurred while preparing project: Error: Command failed: npm install --legacy-peer-deps
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /<projectディレクトリ>/my-medusa-store/package.json
npm ERR! errno -2
npm ERR! enoent Could not read package.json: Error: ENOENT: no such file or directory, open '/<projectディレクトリ>/my-medusa-store/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
調べてもこのissueは開かれておらず解決策もなさそうだったので、--repo-url
オプション以下を消して再度試したところ、うまく作成できた
成功すると自動でウィンドウが開き、以下画面が表示される
あとはアカウント作ってログインすると。
一旦ここで終わりー
backend, adminのデプロイを行ったので備忘録めも
デプロイ先:DigitalOcean
デプロイ自体はgithubのリポジトリを選ぶだけで簡単
注意1:medusaは2GB以上のRAMがないとデプロイのプロセスで処理が終了する
注意2:resourceのsettingからHealth Careの開始時間を300s遅らせないと初期ロードが終了するのを待たずHealth Careが始まりエラーが出る
デプロイ後は
{自分のバックエンドのurl}/app
のurlでadminページに飛ぶ
これから作ったECなんだけどクソほど保守運用しづらいのでMedusaは使うな
誰も使ってないけど、Medusaは使うな