Skip to content

Commit

Permalink
Adds better error messages and environment variable fault tolerance (v…
Browse files Browse the repository at this point in the history
…ercel#1172)

* Adds better error messages and environment variable fault tolerance

* No hidden undefined
  • Loading branch information
manovotny authored Aug 12, 2023
1 parent fc92f70 commit 528ad9b
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 8 deletions.
6 changes: 3 additions & 3 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ COMPANY_NAME="Vercel Inc."
TWITTER_CREATOR="@vercel"
TWITTER_SITE="https://nextjs.org/commerce"
SITE_NAME="Next.js Commerce"
SHOPIFY_REVALIDATION_SECRET=
SHOPIFY_STOREFRONT_ACCESS_TOKEN=
SHOPIFY_STORE_DOMAIN=
SHOPIFY_REVALIDATION_SECRET=""
SHOPIFY_STOREFRONT_ACCESS_TOKEN=""
SHOPIFY_STORE_DOMAIN="[your-shopify-store-subdomain].myshopify.com"
11 changes: 7 additions & 4 deletions app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Navbar from 'components/layout/navbar';
import { ensureStartsWith } from 'lib/utils';
import { Inter } from 'next/font/google';
import { ReactNode, Suspense } from 'react';
import './globals.css';
Expand All @@ -7,6 +8,8 @@ const { TWITTER_CREATOR, TWITTER_SITE, SITE_NAME } = process.env;
const baseUrl = process.env.NEXT_PUBLIC_VERCEL_URL
? `https://${process.env.NEXT_PUBLIC_VERCEL_URL}`
: 'http://localhost:3000';
const twitterCreator = TWITTER_CREATOR ? ensureStartsWith(TWITTER_CREATOR, '@') : undefined;
const twitterSite = TWITTER_SITE ? ensureStartsWith(TWITTER_SITE, 'https://') : undefined;

export const metadata = {
metadataBase: new URL(baseUrl),
Expand All @@ -18,12 +21,12 @@ export const metadata = {
follow: true,
index: true
},
...(TWITTER_CREATOR &&
TWITTER_SITE && {
...(twitterCreator &&
twitterSite && {
twitter: {
card: 'summary_large_image',
creator: TWITTER_CREATOR,
site: TWITTER_SITE
creator: twitterCreator,
site: twitterSite
}
})
};
Expand Down
6 changes: 5 additions & 1 deletion lib/shopify/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { HIDDEN_PRODUCT_TAG, SHOPIFY_GRAPHQL_API_ENDPOINT, TAGS } from 'lib/constants';
import { isShopifyError } from 'lib/type-guards';
import { ensureStartsWith } from 'lib/utils';
import { revalidateTag } from 'next/cache';
import { headers } from 'next/headers';
import { NextRequest, NextResponse } from 'next/server';
Expand Down Expand Up @@ -49,7 +50,9 @@ import {
ShopifyUpdateCartOperation
} from './types';

const domain = `https://${process.env.SHOPIFY_STORE_DOMAIN!}`;
const domain = process.env.SHOPIFY_STORE_DOMAIN
? ensureStartsWith(process.env.SHOPIFY_STORE_DOMAIN, 'https://')
: '';
const endpoint = `${domain}${SHOPIFY_GRAPHQL_API_ENDPOINT}`;
const key = process.env.SHOPIFY_STOREFRONT_ACCESS_TOKEN!;

Expand Down Expand Up @@ -97,6 +100,7 @@ export async function shopifyFetch<T>({
} catch (e) {
if (isShopifyError(e)) {
throw {
cause: e.cause?.toString() || 'unknown',
status: e.status || 500,
message: e.message,
query
Expand Down
1 change: 1 addition & 0 deletions lib/type-guards.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
export interface ShopifyErrorLike {
status: number;
message: Error;
cause?: Error;
}

export const isObject = (object: unknown): object is Record<string, unknown> => {
Expand Down
3 changes: 3 additions & 0 deletions lib/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,6 @@ export const createUrl = (pathname: string, params: URLSearchParams | ReadonlyUR

return `${pathname}${queryString}`;
};

export const ensureStartsWith = (stringToCheck: string, startsWith: string) =>
stringToCheck.startsWith(startsWith) ? stringToCheck : `${startsWith}${stringToCheck}`;

0 comments on commit 528ad9b

Please sign in to comment.