diff --git a/.changeset/ten-lions-yell.md b/.changeset/ten-lions-yell.md new file mode 100644 index 0000000000..adfb9d8d62 --- /dev/null +++ b/.changeset/ten-lions-yell.md @@ -0,0 +1,5 @@ +--- +"create-medusa-app": patch +--- + +fix(create-medusa-app): improved error messages diff --git a/packages/create-medusa-app/src/commands/create.ts b/packages/create-medusa-app/src/commands/create.ts index 6a658d0ebe..917fbdee9c 100644 --- a/packages/create-medusa-app/src/commands/create.ts +++ b/packages/create-medusa-app/src/commands/create.ts @@ -53,11 +53,14 @@ export default async ({ repoUrl = "", seed, boilerplate }: CreateOptions) => { } const dbName = `medusa-${nanoid(4)}` let isProjectCreated = false + let isDbInitialized = false let printedMessage = false processManager.onTerminated(async () => { spinner.stop() - if (client) { + // prevent an error from occurring if + // client hasn't been declared yet + if (isDbInitialized && client) { await client.end() } @@ -86,6 +89,7 @@ export default async ({ repoUrl = "", seed, boilerplate }: CreateOptions) => { const projectName = await askForProjectName() const { client, dbConnectionString } = await getDbClientAndCredentials(dbName) + isDbInitialized = true const adminEmail = await askForAdminEmail(seed, boilerplate) logMessage({ diff --git a/packages/create-medusa-app/src/utils/create-db.ts b/packages/create-medusa-app/src/utils/create-db.ts index d0f06f17c0..3e90810ccc 100644 --- a/packages/create-medusa-app/src/utils/create-db.ts +++ b/packages/create-medusa-app/src/utils/create-db.ts @@ -1,9 +1,11 @@ +import { EOL } from "os" import pg from "pg" import postgresClient from "./postgres-client.js" import inquirer from "inquirer" import logMessage from "./log-message.js" import formatConnectionString from "./format-connection-string.js" import { Ora } from "ora" +import { getCurrentOs } from "./get-current-os.js" type CreateDbOptions = { client: pg.Client @@ -80,9 +82,7 @@ export async function getDbClientAndCredentials(dbName: string): Promise<{ }) } catch (e) { logMessage({ - message: - "Couldn't connect to PostgreSQL. Make sure you have PostgreSQL installed and the credentials you provided are correct.${EOL}${EOL}" + - "You can learn how to install PostgreSQL here: https://docs.medusajs.com/development/backend/prepare-environment#postgresql", + message: `Couldn't connect to PostgreSQL. Make sure you have PostgreSQL installed and the credentials you provided are correct.${EOL}${EOL}You can learn how to install PostgreSQL here: https://docs.medusajs.com/development/backend/prepare-environment?os=${getCurrentOs()}#postgresql`, type: "error", }) } diff --git a/packages/create-medusa-app/src/utils/get-current-os.ts b/packages/create-medusa-app/src/utils/get-current-os.ts new file mode 100644 index 0000000000..d18bcb2c6f --- /dev/null +++ b/packages/create-medusa-app/src/utils/get-current-os.ts @@ -0,0 +1,10 @@ +export const getCurrentOs = (): string => { + switch (process.platform) { + case "darwin": + return "macos" + case "linux": + return "linux" + default: + return "windows" + } +}