Как импортировать внешний CSS-файл в приложение nextjs

Я работаю над реакцией на основе следующего приложения. Некоторые пакеты npm используют внешний импорт CSS. Я получаю ошибку как

Module parse failed, you may need an appropriate loader to handle this file type.

Как я могу поддержать импорт CSS из внешних пакетов в моем приложении nextjs. Я где-то проверил, внеся изменения в next.config.js, это работает. Но я не могу найти подходящего. Было бы здорово, если бы кто-то мог мне помочь в этом.

6 ответов

Вы можете добавить файл css в заголовок nextjs.

import Head from 'next/head'

и в методе рендеринга, внутри возвращаемого значения добавьте тег head, похожий на обычный HTML, тег head должен быть внутри div.

<div>
    <Head>
      <title>Test</title>
      <link href="/static/master.css" rel="stylesheet" key="test"/>
    </Head>
</div>

также CSS должен быть в статической папке. Добавьте ключ к тегу ссылки, чтобы повторно использовать CSS на нескольких страницах. Если ключ одинаков на разных страницах, то следующий сервер не будет перезагружать CSS, а вместо этого повторно использует файл CSS.

Таким образом, нет необходимости в каких-либо пакетах CSS.

Сначала вам нужно создать next.config.js файл в корневом каталоге

Установить следующий css

npm i @zeit/next-css

в next.config.js

const withCSS = require('@zeit/next-css')
module.exports = withCSS()

Перезапустить приложение

ИСПОЛЬЗОВАНИЕ

import 'react-select/dist/react-select.css'

Не нужно опасно SetInnerHTML

  1. импортируйте ваш внешний CSS-файл в компонент. Например, response-select требует, чтобы вы добавили их таблицу стилей, чтобы ее стили работали. Вы можете импортировать их таблицы стилей, используя

    import rsStyles from 'react-select/dist/react-select.css'
    
  2. Внедрить стиль в ваш компонент, используя dangerouslySetInnerHTML в render метод

    render() {
      return (
        <div>
          <style dangerouslySetInnerHTML={{ __html: rsStyles }} />
          // rest of your component code 
          // where you can use the injected styles
        </div>
      );
    }
    

вы можете просто переместить свой файл css в общую папку /public/{name}.css следующим образом

и импортируйте файл css в файл src/pages/_document.js

      import { Html, Head, Main, NextScript } from 'next/document'

...
<Head>
   <link href="/{name}.css" rel="stylesheet" />
</Head>
...

внутри _app.js вы можете сделать следующее:

      if (someCondition){
import('../styles/rtl.css');
}

в вашем файле _app.js

поместите все свои js-скрипты в тег в блоке возврата, вот так

      

export default function App(props) {

  return (
    <>
      <Head>
        <link
          rel="stylesheet"
          href="https://unpkg.com/react-quill@1.3.3/dist/quill.snow.css"
        />
        <script type="text/javascript" src="/js/jquery-3.6.0.min.js"></script>
        <script type="text/javascript" src="/js/bootstrap.bundle.min.js"></script>
        <script type="text/javascript" src="/js/Font-Awesome.js"></script>
        <script type="text/javascript" src="/js/select2.min.js"></script>
        <script type="text/javascript" src="/js/slick.min.js"></script>
      </Head>
      <AuthProvider>
      </AuthProvider>
    </>
  );
}

Другие вопросы по тегам