React Js, веб — пакет-не удается импортировать css-файл из node_module в компонент react

#reactjs #typescript #react-native #webpack #css-loader

Вопрос:

Я использую модуль react-html5-camera-photo узла в своем проекте, чтобы сделать снимок с камеры. Библиотека требует, чтобы компонент использовал Camera компонент для импорта css файла ( react-html5-camera-photo/build/css/index.css ) для кнопок захвата стиля.

Даже после добавления import 'react-html5-camera-photo/build/css/index.css' в мой компонент react стили не применяются, и при проверке отображаемых элементов с помощью элемента inspect ни один из стилей не применяется из импортированного css файла.

Я попытался изменить webpack.config.js настройки, но безуспешно.

Вот мои webpack.config.js настройки

 module: {  rules: [  {  test: /react-html5-camera-photo(.*?).css$/,  use: [  { loader: "css-loader", options:{  modules: false  }}  ]  },  {  test: /.(scss|css)$/,  use: [  { loader: "style-loader" },  { loader: "css-loader",  options: {  modules: true,  }},  { loader: "sass-loader" }  ]  }  ]  }  

Но при такой настройке css-loader шоу Module build error

 ERROR in ../node_modules/react-html5-camera-photo/build/css/index.css Module build failed (from ../node_modules/css-loader/dist/cjs.js): CssSyntaxError  (2:7) node_modulesreact-html5-camera-photobuildcssindex.css Unknown word   1 |  gt; 2 | import API from "!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js";  | ^  3 | import domAPI from "!../../../style-loader/dist/runtime/styleDomAPI.js";  4 | import insertFn from "!../../../style-loader/dist/runtime/insertBySelector.js";  @ ./components/OnsiteSituation/OnsiteSituation.tsx 84:0-54  @ ./components/ServiceLead/ServiceLead.tsx 47:0-65 79:803-818  @ ./App.tsx 33:0-63 45:370-381  @ ./index.tsx 3:0-26 8:21-24  webpack 5.64.0 compiled with 1 error in 29408 ms  

Заранее спасибо,

Ответ №1:

Я предполагаю, что проблема react-html5-camera-photobuildcssindex.css была обработана css-loader дважды из-за соблюдения правил дважды, поэтому я думаю, что ваша проблема может быть решена только exclude react-html5-camera-photo с помощью 2-го правила следующим образом:

 [  {  test: /react-html5-camera-photo(.*?).css$/,  use: [  // ...   ]  },  {  test: /.(scss|css)$/,  // exclude your above rule to avoid processing twice  exclude: /react-html5-camera-photo(.*?).css$/,  use: [  // ...  ]  } ]