【Next.js】Invariant Violation: React.Children.only expected to〜が吐き出される

こんなエラーが出た場合、

Invariant Violation: React.Children.only expected to receive a single React element child.

意味としては、「Reactのコンポーネントは、1つしかエレメントを内包できません」という意味となります。

        return (
            <StripeProvider stripe={this.state.stripe}>
                    <Head>
                        <script src="https://js.stripe.com/v2/"></script>
                    </Head>
                    <Header />
                    <div>
                        <h2>{detail.pageName}</h2>
                        <h4>概要</h4>
                        <p>{detail.body}</p>
                        <h4>アーティスト名 </h4>
                        <p>{detail.artistName}</p>
                        <h4>月額</h4>
                        <p>{detail.monthlyFee}円</p>
                    </div>
                    <Elements>
                        <CheckoutForm />
                    </Elements>
                    <Footer />
                    <style jsx>{`
                        div {
                            margin: 0 auto;
                            width: 80%;
                            height: 80%;
                        }
                        .fan-img {
                            display: block;
                        }
                    `}</style>
            </StripeProvider>
          );

ここでいうReactのコンポーネントは、

<StripeProvider stripe={this.state.stripe}>...</StripeProvide}>

のことで、その中のエレメントを何かしらの要素で1まとめにしてあげれば解決します。

以下のような感じです。

        return (
            <StripeProvider stripe={this.state.stripe}>
                <> // 追加
                    <Head>
                        <script src="https://js.stripe.com/v2/"></script>
                    </Head>
                    <Header />
                    <div>
                        <h2>{detail.pageName}</h2>
                        <h4>概要</h4>
                        <p>{detail.body}</p>
                        <h4>アーティスト名 </h4>
                        <p>{detail.artistName}</p>
                        <h4>月額</h4>
                        <p>{detail.monthlyFee}円</p>
                    </div>
                    <Elements>
                        <CheckoutForm />
                    </Elements>
                    <Footer />
                    <style jsx>{`
                        div {
                            margin: 0 auto;
                            width: 80%;
                            height: 80%;
                        }
                        .fan-img {
                            display: block;
                        }
                    `}</style>
                </> // 追加
            </StripeProvider>
          );