react-slick:从slick-carousel导入CSS失败

fly*_*000 5 reactjs css-import react-slick

在这里反应新手。我的应用程序使用create-react-app,而我正在使用react-slick作为轮播。我正在尝试按照安装程序中提供的指示进行操作,但是以下操作对我不起作用:

@import "~slick-carousel/slick/slick.css"; @import "~slick-carousel/slick/slick-theme.css";

我收到以下错误:

./src/components/Homepage.scss Module not found: Can't resolve '~slick-carousel/slick/slick.css' in '/Users/simon/Dev/frischideas/site-new/src/components'

如果我将CDS从CDN添加到index.html,它会起作用,但是我宁愿避免该网络调用,因为我认为它会影响初始加载时页面的呈现。

我试着按照说明配置创建反应的应用程序内使用相对路径,但是,这不是为我工作无论是。也许我完全误会了,但是我认为〜表示法允许我从/ node_modules中的包中导入scss。

任何建议/澄清将不胜感激。

更新:从我的webpack.config文件中添加设置(大多数是create-react-app中的默认设置)。

{
            test: /\.scss$/,
            use: [
              require.resolve('classnames-loader'),
              require.resolve('style-loader'), {
                loader: require.resolve('css-loader'),
                options: {
                  importLoaders: 1,
                  modules: 1,
                  localIdentName: "[name]__[local]___[hash:base64:5]"  
                },
              },{
                loader: require.resolve('postcss-loader'),
                options: {
                  // Necessary for external CSS imports to work
                  // https://github.com/facebookincubator/create-react-app/issues/2677
                  ident: 'postcss',
                  plugins: () => [
                    require('postcss-flexbugs-fixes'),
                    autoprefixer({
                      browsers: [
                        '>1%',
                        'last 6 versions',
                        'Firefox ESR',
                        'not ie < 9', // React doesn't support IE8 anyway,'
                      ],
                      remove: false,
                      flexbox: 'no-2009',
                    }),
                  ],
                },
              },{
                loader: require.resolve('sass-loader'),
                options: {
                  outputStyle: 'expanded'
                }
              }
            ],
          }
Run Code Online (Sandbox Code Playgroud)

小智 25

你可能错过了这个:

npm install slick-carousel
Run Code Online (Sandbox Code Playgroud)

  • 小提琴!这正是我对这个问题的看法。我没有意识到我在专注于文档说明的同时安装了两次 reack-slick。一些干扰...(= (2认同)

Amj*_*d K 17

您还需要为 CSS 和字体安装 slick-carousel。 这就是这里的诀窍。 干杯...

首先,安装 slick-carousel

 npm install slick-carousel --save
Run Code Online (Sandbox Code Playgroud)

如果您使用纱线,则可以使用

 yarn add slick-carousel
Run Code Online (Sandbox Code Playgroud)

然后在 App.js 文件中导入 CSS 文件。

 import "slick-carousel/slick/slick.css";
 import "slick-carousel/slick/slick-theme.css";
Run Code Online (Sandbox Code Playgroud)


a_m*_*dev 13

我一直在努力解决这个问题,我终于找到了解决方案:

  1. 只需进入您的node_modules文件夹并找到slick-carousel文件夹
  2. 在那个 findslick.scssslick-theme.scssfrom slick 文件夹中打开它们
  3. 创建的名称两个单独的文件_slick.scss_slickTheme.scss内部项目的你的风格的文件夹
  4. slick.scss和复制所有内容slick-theme.scss并将它们放入新创建的文件(_slick.scss_slickTheme.scss)中
  5. 将它们导入到您的app.scss文件中
  6. 现在,如果您像我一样使用 webpack,我猜您将无法解决'./ajax-loader.gif'错误并且此后无法解决字体错误
  7. 事实上,这些文件是由slick-carouselcss 自己使用的,为此我们可以简单地进入新创建的文件_slickTheme.scss并找到这些行
/* Slider */

.slick-list {
    .slick-loading & {
        background: #fff slick-image-url("ajax-loader.gif") center center no-repeat;
    }
}

/* Icons */
@if $slick-font-family == "slick" {
    @font-face {
        font-family: "slick";
        src: slick-font-url("slick.eot");
        src: slick-font-url("slick.eot?#iefix") format("embedded-opentype"), slick-font-url("slick.woff") format("woff"), slick-font-url("slick.ttf") format("truetype"), slick-font-url("slick.svg#slick") format("svg");
        font-weight: normal;
        font-style: normal;
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 将它们注释掉


小智 5

您更改为:

import "slick-carousel/slick/slick.css";

import "slick-carousel/slick/slick-theme.css";
Run Code Online (Sandbox Code Playgroud)

删除