1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

(2023/5) Electron + Next.js(Typescript) + Chakra UI でデスクトップアプリを作成する!

Last updated at Posted at 2023-05-13

■環境

・windows11
・Node.js (v18.12.1)
・Nextron (8.19.2)

■Nextronとは

Electron + Next.jsのビルドの諸々の設定を行ってくれるライブラリ。
これを使わないと、割と最初の設定が面倒らしい。

■Electron + Next.jsのプロジェクト作成

npx create-nextron-app my-app --example basic-typescript
cd my-app
npm install nextron@latest
npm run build
npm run dev

デスクトップアプリが起動しました!
Devtoolもちゃんと使えてます。
スクリーンショット 2023-05-11 234743.png

■Chakra UIの導入

1.Chakra UIに必要なパッケージのinstall

npm install -D @chakra-ui/react @emotion/react@^11 @emotion/styled@^11 framer-motion@^4
npm install -D @chakra-ui/icons /*アイコンも利用したい場合はこちらもinstall*/

2. ChakraProviderのセットアップ

・pages配下に_app.tsxを作成
_app.tsx: すべてのコンポーネントの初期化に使われるコンポーネント

import { ChakraProvider } from '@chakra-ui/react';
import { AppProps } from 'next/app';

export default function App({ Component, pageProps }: AppProps): JSX.Element {
    return (
        <ChakraProvider>
            <Component {...pageProps} />
        </ChakraProvider>
    );
}

3. Chakra UI のButtonコンポーネントを置いてみる

import React from 'react';
import Head from 'next/head';
import Link from 'next/link';
import { Button, Stack } from '@chakra-ui/react';

function Home() {
  return (
    <React.Fragment>
      <Head>
        <title>Home - Nextron (with-typescript)</title>
      </Head>
      <div>
        <p>
          ⚡ Electron + Next.js ⚡ -
          <Link href="/next">
            <a>Go to next page</a>
          </Link>
        </p>
        <img src="/images/logo.png" />
        <Stack spacing={4} direction='row' align='center'>
          <Button colorScheme='teal' size='xs'>
            Button
          </Button>
          <Button colorScheme='teal' size='sm'>
            Button
          </Button>
          <Button colorScheme='teal' size='md'>
            Button
          </Button>
          <Button colorScheme='teal' size='lg'>
            Button
          </Button>
        </Stack>
      </div>
    </React.Fragment>
  );
};

export default Home;

下記のエラーが発生。

Server Error
SyntaxError: Named export 'motion' not found. The requested module 'framer-motion' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export, for example using:

import pkg from 'framer-motion';
const { motion, useIsPresent } = pkg;

どうやらChakra UIのVersionに相性の問題があるっぽい。

私の別プロジェクトでしているバージョンにpackage.jsonの設定を変更することで、とりあえず正常に動くようになりました...!

"@chakra-ui/icons": "^2.0.15",
"@chakra-ui/react": "^2.4.6",
"@emotion/react": "^11.10.5",
"@emotion/styled": "^11.10.5",
"framer-motion": "^6.5.1",

スクリーンショット 2023-05-12 014647.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?