質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • webpack

    322questions

WebpackでSlickを使用する際に、"slick-theme.scss"内で使用されている画像とフォントが読み込めない

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 1,411

kiiit

score 2

内容

WebpackでjQueryのスライダー用ライブラリSlickを使用しているのですが、
slick-theme.scssをimportするとscss内で定義されている画像とフォントのパスが
localhostのドキュメントルートからのパスになってしまい404 Not Foundとなってしまいます。

現状回避策として、
htmlファイルに直接書きを記述することでslick-theme.cssのみWeb上から読み込んでいる状態です。

<link rel="stylesheet" type="text/css" href="http://cdn.jsdelivr.net/jquery.slick/1.6.0/slick-theme.css"/>

ディレクトリ構造

[ProjectDirectory]
├── package.json
├── public
│   ├── commons.js
│   ├── entry.js
│   ├── detail
│   │   └── 1.html
│   └── js
│       └── ①detail.js(この中でslickをimport)
├── src
│   ├── entry.js
│   └── js
│       ├── _common.js
│       ├── detail.js
│       └── list.js
└── ②webpack.config.babel.js

①detail.js

// <[slick読み込み]===============================>
import 'slick-carousel';
import 'slick-carousel/slick/slick.scss';
import 'slick-carousel/slick/slick-theme.scss';

// <[slickerの設定]>============================>
$('.slider').slick({
  dots: true,
  centerMode: true,
  centerPadding: '150px',
  responsive: [
    {
      breakpoint: 767,
      settings: {
        centerMode: false
      }
    }
  ]
})

②webpack.config.js

'use strict';
// <[Origin]==================================>
const
webpack = require('webpack'),
path = require('path'),
autoprefixer = require('autoprefixer'),
precss = require('precss')

// <[Paths]==================================>
const
src_path = path.resolve(__dirname, 'src'),
dist_path = path.resolve(__dirname, 'public')

// <[Plugins]==================================>
const
CommonsChunkPlugin = new webpack.optimize.CommonsChunkPlugin({
  name: 'commons',
  filename: 'commons.js'
}),
jQuery = new webpack.ProvidePlugin({
  $: 'jquery',
  jQuery: 'jquery'
}),
NamedModulesPlugin = new webpack.NamedModulesPlugin(),
HotModuleReplacementPlugin = new webpack.HotModuleReplacementPlugin(),
LoaderOptionsPlugin = new webpack.LoaderOptionsPlugin({
  options: {
    postcss: [
      require('autoprefixer')({
        browsers: ['last 2 versions']
      })
    ]
  }
})

// <[ModuleRules]=============================>
const
LOADER_ES6 = {
  test: /\.js$/,
  include: src_path,
  use: [{
    loader: 'babel-loader',
    options: {
      presets: [
        ['es2015', {modules: false}]
      ]
    }
  }]
},
LOADER_SCSS = {
  test: /\.(css|scss)$/,
  loader: ['style-loader', 'css-loader?-url', 'sass-loader', 'postcss-loader']
},
LOADER_OTHERS = {
  test: /\.(eot|svg|woff|ttf|gif)$/,
  loader: 'url-loader'
}


// <[CoreConfigs]=============================>
const
config = {
  context: src_path,
  entry: {
    'entry': './entry.js',
    'js/list': './js/list.js',
    'js/detail': './js/detail.js'
  },
  output: {
    path: dist_path,
    publicPath: '/',
    filename: '[name].js'
  },
  module: {
    rules: [
      LOADER_ES6,
      LOADER_SCSS,
      LOADER_OTHERS
    ],
  },
  plugins: [
    jQuery,
    NamedModulesPlugin,
    HotModuleReplacementPlugin,
    CommonsChunkPlugin,
    LoaderOptionsPlugin
  ],
  devServer: {
    contentBase: dist_path,
    port: 8080,
    inline: true,
    hot: true
  }
}

module.exports = config;

ブラウザで表示されるエラーログ

http://localhost:8080/detail/ajax-loader.gif 404 (Not Found)
http://localhost:8080/detail/fonts/slick.woff
http://localhost:8080/detail/fonts/slick.ttf 
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

同じタグがついた質問を見る

  • webpack

    322questions