Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions packages/next/src/lib/metadata/resolve-metadata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ import {
import { resolveOpenGraph, resolveTwitter } from './resolvers/resolve-opengraph'
import { resolveTitle } from './resolvers/resolve-title'
import { resolveAsArrayOrUndefined } from './generate/utils'
import { isClientReference } from '../client-reference'
import {
getComponentTypeModule,
getLayoutOrPageModule,
Expand Down Expand Up @@ -331,9 +330,6 @@ async function getDefinedViewport(
props: any,
tracingProps: { route: string }
): Promise<Viewport | ViewportResolver | null> {
if (isClientReference(mod)) {
return null
}
if (typeof mod.generateViewport === 'function') {
const { route } = tracingProps
return (parent: ResolvingViewport) =>
Expand All @@ -356,11 +352,6 @@ async function getDefinedMetadata(
props: any,
tracingProps: { route: string }
): Promise<Metadata | MetadataResolver | null> {
// Layer is a client component, we just skip it. It can't have metadata exported.
// Return early to avoid accessing properties error for client references.
if (isClientReference(mod)) {
return null
}
if (typeof mod.generateMetadata === 'function') {
const { route } = tracingProps
return (parent: ResolvingMetadata) =>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export default function Layout({ children }: { children: React.ReactNode }) {
return <div>{children}</div>
}

export const metadata = {
title: 'Root Layout',
description: 'Root Description',
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
'use client'

export default function PageContent() {
return <h1>Page 2 Content</h1>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import PageContent from './page-content'

export default PageContent
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
'use client'

export default function PageContent() {
return <h1>Page 1 Content</h1>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import PageContent from './page-content'

export const metadata = {
title: 'Page 1',
description: 'Page 1 Description',
}

export default PageContent
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { nextTestSetup } from 'e2e-utils'

describe('app-dir - reexport-client-component-metadata', () => {
const { next } = nextTestSetup({
files: __dirname,
})

it('should render the page metadata if override', async () => {
const $ = await next.render$('/override')
expect($('title').text()).toBe('Page 1')
expect($('meta[name="description"]').attr('content')).toBe(
'Page 1 Description'
)

const browser = await next.browser('/override')
expect(await browser.elementByCss('title').text()).toBe('Page 1')
expect(
await browser
.elementByCss('meta[name="description"]')
.getAttribute('content')
).toBe('Page 1 Description')
})

it('should render the layout metadata if not override', async () => {
const $ = await next.render$('/no-override')
expect($('title').text()).toBe('Root Layout')
expect($('meta[name="description"]').attr('content')).toBe(
'Root Description'
)

const browser = await next.browser('/no-override')
expect(await browser.elementByCss('title').text()).toBe('Root Layout')
expect(
await browser
.elementByCss('meta[name="description"]')
.getAttribute('content')
).toBe('Root Description')
})
})
Loading