DEVLOG

Uncaught TypeError: ZNe is not a function / vite + antd build ์—๋Ÿฌ ๋ณธ๋ฌธ

frontend/log

Uncaught TypeError: ZNe is not a function / vite + antd build ์—๋Ÿฌ

meroriiDev 2023. 5. 15. 17:08
728x90
๋ฐ˜์‘ํ˜•

 

๐Ÿ“– ๋ชฉ์ฐจ

 

     


    ๐Ÿ’ก ์ด์Šˆ

    Uncaught TypeError: ZNe is not a function

    ํŽ˜์ด์ง€๋ฅผ ๋กœ์ปฌ์—์„œ ํ™•์ธํ• ๋•Œ(yarn start)์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๊ณ , ํŽ˜์ด์ง€๋ฅผ buildํ•˜๋Š” ๊ฒฝ์šฐ build์—๋Š” ์„ฑ๊ณตํ•˜์ง€๋งŒ ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๋ฉ”์„ธ์ง€์™€ ํ•จ๊ป˜ ํŽ˜์ด์ง€๊ฐ€ ๋„์›Œ์ง€์ง€ ์•Š๋Š” ์ด์Šˆ ๋ฐœ์ƒ

     

     

    ๐Ÿ’ก ์›์ธ

    ํ˜„์žฌ ๋ฒˆ๋“ค๋Ÿฌ๋กœ vite๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ vite+react์˜ ํ˜ธํ™˜์ด ์•„์ง ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€์ง€์•Š์•„ ๋นŒ๋“œ ์‹œ antd ๋ถ€๋ถ„์—์„œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž„.

     

    ๐Ÿ’ก ํ•ด๊ฒฐ

    โŒ ํ•ด๊ฒฐ1 

    (ํ•ด๋‹น ์ด์Šˆ๊ฐ€ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐ๋˜์ง€๋Š” ์•Š์•˜์œผ๋‚˜, ๋‹ค๋ฅธ ํŽ˜์ด์ง€์—์„œ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์–ด ํ•จ๊ป˜ ์ ์šฉํ–ˆ๊ณ  ๊ธฐ๋ก์šฉ์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.)

     

    vite.config.ts์—์„œ ์‚ฌ์šฉํ•˜๋Š” vite-plugin-import2๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ vite-plugin-imp๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ณ€๊ฒฝ ํ›„ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋งž๋Š” ์‚ฌ์šฉ๋ฒ•์œผ๋กœ ํŒŒ์ผ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•จ

    vite.config.ts

    import { defineConfig } from 'vite';
    import reactRefresh from '@vitejs/plugin-react-refresh';
    import tsconfigPaths from 'vite-tsconfig-paths';
    import vitePluginImp from 'vite-plugin-imp';
    
    // https://vitejs.dev/config/
    export default defineConfig({
      server: {
        port: 8080,
      },
      mode: process.env.VITE_APP_MODE,
      envDir: 'config',
      build: {
        chunkSizeWarningLimit: 2500,
        cssCodeSplit: true,
        outDir: 'build',
      },
      css: {
        preprocessorOptions: {
          less: {
            javascriptEnabled: true,
            modifyVars: {
              '@primary-color': '#5a74f5',
            },
          },
        },
      },
      resolve: {
        alias: [{ find: /^~/, replacement: '' }],
      },
      plugins: [
        reactRefresh(),
        tsconfigPaths(),
        vitePluginImp({
          libList: [
            {
              libName: 'antd',
              style: name => `antd/es/${name}/style`,
            },
          ],
        }),
      ],
    });

     

    โญ•๏ธ ํ•ด๊ฒฐ2

    ํ•ด๋‹น ์ด์Šˆ์˜ ์ง์ ‘์ ์ธ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์œผ๋กœ vite์™€ antd ์‚ฌ์ด์— ๋ฐœ์ƒํ•˜๋Š” ์ถฉ๋Œ์ด์—ˆ๋˜ import ๋ถ€๋ถ„์„ ๋ณ€๊ฒฝ

    components/Tables/Metatable

    ๊ธฐ์กด์—๋Š” antd/lib/table์—์„œ Table๊ณผ TableProps๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ importํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ด๋•Œ antd/lib/table์—์„œ importํ•˜๊ณ ์žˆ๋Š” Table ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ๋‹ค.

    ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ antd๋‚ด์—์„œ ๊ฐ์ฒดํ˜•์‹์œผ๋กœ Table์„ ๊ฐ€์ ธ์˜ค๋‹ˆ build์‹œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.

     

    ๐Ÿ’ก ์ •๋ฆฌ

    vite์™€ antd๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ• ๋•Œ๋Š” antd ์š”์†Œ๋Š” 'antd'์—์„œ ๊ฐ์ฒดํ˜•์‹์œผ๋กœ,
    antd type์š”์†Œ๋Š” 'antd/lib/...'์—์„œ ๊ฐ์ฒดํ˜•์‹์œผ๋กœ import ํ•˜๋Š” ๋ฐฉ์‹์„ ์ด์šฉ!

    ์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์ •๋ณด

    "antd": "^4.16.13",
    "vite": "^2.9.0",
    "vite-plugin-imp": "^2.2.0"
    728x90
    ๋ฐ˜์‘ํ˜•
    Comments