首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react slick:从slick-carousel导入CSS失败

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

Stack Overflow用户
提问于 2018-02-14 03:33:38
回答 8查看 57.2K关注 0票数 22

反应初学者在这里。我的应用程序使用创建-反应-应用程序,我正在拉反应光滑一个旋转木马。我正在尝试遵循react设置中提供的指导,但下面的操作对我来说不起作用:

@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'

如果我从CDN中将css添加到index.html中,它就能工作,但我宁愿避免网络调用,因为我认为它影响了初始加载时页面的呈现。

我试着按照使用说明配置create应用程序来使用相对路径,但这对我来说也不管用。也许我完全误解了,但我认为~表示法将允许我从/node_modules中的包中导入scss。

如有任何建议/澄清,不胜感激。

Update:从我的webpack.config文件中添加安装程序(其中大多数都是create中的默认设置)。

代码语言:javascript
复制
{
            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'
                }
              }
            ],
          }
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2018-08-07 12:20:23

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

  1. 只需进入node_modules文件夹并找到slick-carousel文件夹
  2. 在里面从光滑的文件夹中找到slick.scssslick-theme.scss并打开它们。
  3. 在项目样式文件夹中创建两个名称为_slick.scss_slickTheme.scss的独立文件
  4. slick.scssslick-theme.scss复制所有文件,并将它们放入新创建的文件中( _slick.scss_slickTheme.scss )
  5. 将它们导入app.scss文件中
  6. 现在,如果你像我一样使用webpack,我猜你不能解决'./ajax-loader.gif'错误,也不能解决字体错误
  7. 事实上,这些文件是由slick-carousel css本身使用的,为此,我们可以简单地进入新创建的_slickTheme.scss并找到以下行
代码语言:javascript
复制
/* 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;
    }
}
  1. 评论他们
票数 16
EN

Stack Overflow用户

发布于 2019-04-30 09:59:58

你改变成这样:

代码语言:javascript
复制
import "slick-carousel/slick/slick.css";

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

删除~

票数 57
EN

Stack Overflow用户

发布于 2019-01-17 08:58:11

你可能错过了这个:

代码语言:javascript
复制
npm install slick-carousel
票数 42
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48779212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档