Vyhledávání na webu

reactjs - Mám problémy s importováním CSS modulů a jejich používáním v className


//zde je import CSS modulu

import * as styles from './global-offices.module.css';

a když to používám uvnitř mého divu, například className={styles.iAmClass}, tak mi to dává varování, že iAmClass není exportována z './global-offices.module.css' tady je soubor css:

.wrapper {
    height: 100%;
    width: 100%;
    overflow: hidden;
    position: relative;
    padding: 20px 0px;
    background: #fff;
    margin: var(--mobile-component-buffer);

    @media (min-width: 834px) {
        margin: var(--desktop-component-buffer);
        padding: 20px 20px;

        &#galleryWrapper {
            padding: 20px 40px;
        }
    }
    .gallery {
        overflow: hidden;
        padding: 0;
        margin: 0 auto;

        .officeCard {
            min-width: 235px;
            width: 280px;
            height: auto;
            display: inline-block;
            margin: 0 10px;
            overflow: visible;
            text-align: center;
            vertical-align: top;
            background: var(--color-gray);
            padding: 0 0 1rem;

            &:first-of-type {
                margin: 0 10px 0 10px;
            }

            @media (min-width: 414px) {
                width: 280px;
                min-height: 515px;

                &:first-of-type {
                    margin: 0 10px;
                }
            }
        }
        h5 {
            margin: 1rem 0;
        }
        p {
            margin: 0.5rem 0;

            &.siteUrl {
                color: var(--color-orange);
            }
        }
    }
    .prevArrowButton {
        position: absolute;
        top: 35%;
        left: -12px;

        @media (min-width: 834px) {
            left: 2px;
        }

        @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
            width: 90px;
        }
    }
    .nextArrowButton {
        position: absolute;
        top: 35%;
        right: -12px;

        @media (min-width: 834px) {
            right: 2px;
        }

        @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
            width: 90px;
        }
    }
    svg {
        height: 2.5rem;
    }
    .dots {
        width: 100%;
        text-align: center;
        margin-top: 15px;
        span {
            border: 1px solid #ccc;
            border-radius: 50%;
            font-size: 0;
            padding: 6px;
            margin: 0 2px;
        }
    }
}

.countrySelector {
    text-align: center;
    width: 250px;
    margin: 20px auto;
    select {
        appearance: menulist;
        margin-top: -1px;
        border: 2px solid var(--color-gray);
    }

    @media (min-width: 834px) {
        width: 650px;
    }
}

.mapContainer {
    position: relative;
    width: 100%;
    height: 0;
    padding-bottom: 100%;

    @media screen and (min-width: 834px) {
        max-width: 90%;
        padding-bottom: 56.25%;
        margin: 0 auto;
    }
}

.mapFrame {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

Přikládám snímek obrazovky jednoho z použití pro referenci

Toto jsou varování, která dostávám, když to spouštím lokálně

Také přikládám TypeScript kód pro exporty CSS modulů, které používám: :

declare module '*.css' {
    const content: { [className: string]: string };
    export default content;
}

Odpověď č. 1

Měl jsem podobný problém ve svém CRA, nicméně používal jsem CSS moduly (ne scss/sass), také moje aplikace používala výchozí CSS loader z CRA (který je součástí balíčku). Problém byl vyřešen takto:

  1. Vytváření souboru Globals.d.ts v ./src.
  2. Přidání těchto řádků do vytvořeného souboru declare module '*.module.css' { const Styles: { [className: string]: string }; export default Styles; }
  3. Přidání /**/*.d.ts do eslintignore, protože eslint považoval vytvořený soubor za soubor js.
  4. Instalace npm install typescript-plugin-css-modules --save-dev
  5. Vytvoření adresáře s názvem .vscode v kořenovém adresáři projektu (pokud ještě neexistuje) a přidání nového souboru s názvem settings.json s následujícími řádky: { "typescript.tsdk": "node_modules/typescript/lib", "typescript.enablePromptUseWorkspaceTsdk": true }

Po výše uvedeném jsem mohl importovat své styly do souborů tsx takto import Styles from './index.module.css';

Doufám, že to pomůže