【问题标题】:How to include node_module css file in scss with Webpacker in rails如何在 webpacker 中将 node_module css 文件包含在 scss 中
【发布时间】:2020-04-16 18:15:30
【问题描述】:

我不知道如何使用 webpacker 将 .css 文件添加到我的 .scss 文件中。我认为这是一个加载程序问题,但我不确定如何设置它。我对 webpacker 和配置文件很困惑。我查找的每件事都显示了 webpacker 的配置文件,但我的 rails 6 配置位于 environment.js 下,语法不同,这让我感到困惑。我认为您可以将它们分隔在一个文件中并要求它们。无论如何,这是问题的一部分。

所以在我的 style.scss 中有一行:

@import '~bootstrap-datepicker/dist/css/bootstrap-datepicker.css';

但是当我尝试使用 webpacker 保存时,我遇到了这个巨大的错误

ERROR in ./app/webpack/stylesheets/style.scss
Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js):
ModuleBuildError: Module build failed (from ./node_modules/postcss-loader/src/index.js):
Error: Failed to find '~bootstrap-datepicker/dist/css/bootstrap-datepicker.css'
  in [
    /Users/daniel/Documents/GitHub/Ojai-Oil-App/app/webpack/stylesheets
  ]
    at /Users/daniel/Documents/GitHub/Ojai-Oil-App/node_modules/postcss-import/lib/resolve-id.js:35:13
    at /Users/daniel/Documents/GitHub/Ojai-Oil-App/node_modules/webpack/lib/NormalModule.js:316:20
    at /Users/daniel/Documents/GitHub/Ojai-Oil-App/node_modules/loader-runner/lib/LoaderRunner.js:367:11
    at /Users/daniel/Documents/GitHub/Ojai-Oil-App/node_modules/loader-runner/lib/LoaderRunner.js:233:18
    at context.callback (/Users/daniel/Documents/GitHub/Ojai-Oil-App/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
    at /Users/daniel/Documents/GitHub/Ojai-Oil-App/node_modules/postcss-loader/src/index.js:208:9
Child mini-css-extract-plugin node_modules/css-loader/dist/cjs.js??ref--7-1!node_modules/postcss-loader/src/index.js??ref--7-2!node_modules/sass-loader/dist/cjs.js??ref--7-3!app/webpack/stylesheets/style.scss:

    ERROR in ./app/webpack/stylesheets/style.scss (./node_modules/css-loader/dist/cjs.js??ref--7-1!./node_modules/postcss-loader/src??ref--7-2!./node_modules/sass-loader/dist/cjs.js??ref--7-3!./app/webpack/stylesheets/style.scss)
    Module build failed (from ./node_modules/postcss-loader/src/index.js):
    Error: Failed to find '~bootstrap-datepicker/dist/css/bootstrap-datepicker.css'
      in [
        /Users/daniel/Documents/GitHub/Ojai-Oil-App/app/webpack/stylesheets
      ]
        at /Users/daniel/Documents/GitHub/Ojai-Oil-App/node_modules/postcss-import/lib/resolve-id.js:35:13

我只是对 webpacker 设置感到困惑。任何帮助都会很棒。这是我的 environment.js(webpacker 配置)

const { environment } = require('@rails/webpacker')
var webpack = require('webpack')
const css = require('./cssLoader')

environment.loaders.append('css', css);

environment.plugins.append(
    'Provide',
    new webpack.ProvidePlugin({
        $: 'jquery',
        jQuery: 'jquery',
        'window.jQuery': 'jquery'
    })
);

environment.loaders.append('jquery', {
    test: require.resolve('jquery'),
    use: [{
        loader: 'expose-loader',
        options: '$',
    }, {
        loader: 'expose-loader',
        options: 'jQuery',
    }],
});

module.exports = environment

【问题讨论】:

    标签: javascript css webpack sass


    【解决方案1】:

    我知道为什么但摆脱 ~ 工作。 “~”不应该指向node_modules吗?我不明白为什么 ~ 适用于我在我的 scss 中拥有的所有很棒的字体和其他资源。

    例如,我的 scss 文件看起来像现在这样:

    /* Font Awesome */
    $fa-font-path: '~@fortawesome/fontawesome-free/webfonts'; 
    @import '~@fortawesome/fontawesome-free/scss/fontawesome';
    @import '~@fortawesome/fontawesome-free/scss/solid';
    @import '~@fortawesome/fontawesome-free/scss/regular';
    
    @import 'bootstrap-datepicker/dist/css/bootstrap-datepicker.css';
    

    谁能说明为什么 ~ 对字体真棒有效,但对 bootstrap-datepicker 不正确?谢谢

    【讨论】:

    • 你确定字体真棒正在使用〜??你能检查一下你的布局中没有cdn链接,甚至没有scss文件吗
    猜你喜欢
    • 2022-11-19
    • 2019-01-13
    • 2017-03-13
    • 2016-12-07
    • 2013-02-10
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多