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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

Q&A

解決済

1回答

1641閲覧

モジュール内のscssファイルをimportする場合にパスが通らず。設定が知りたいです。

tomomo

総合スコア430

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

0グッド

0クリップ

投稿2020/11/15 15:21

編集2020/11/16 01:35

nuxtでsassを使いたくドキュメントを参考にしながら設定を行いました。

shell

1yarn add -D sass sass-loader@^7.3.1 fibers

slickgrid-es6というモジュールを使っていてその中のscssを使いたく.vueの中に以下のように書きました。

scss

1<style lang="scss"> 2@import "~slickgrid-es6/dist/slick.grid.variables.scss"; 3@import "~slickgrid-es6/dist/slick.grid.scss"; 4@import "~slickgrid-es6/dist/slick-default-theme.scss"; 5</style>

すると以下のようなエラーが出力されました。

These relative modules were not found: friendly-errors 23:57:27 friendly-errors 23:57:27 * ../images/collapse.gif in ./node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--7-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./pages/abc.vue?vue&type=style&index=0&lang=scss& :

よくわからなかったので、モジュールのscssファイルをローカルにコピーし、検証したところ以下のところで引っかかっているようでした。下記を削除すると正しく動作します。

scss

1 .slick-sort-indicator-desc { 2 background: url('../images/sort-desc.png'); 3 } 4 5 .slick-sort-indicator-asc { 6 background: url('../images/sort-asc.png'); 7 }

つまり../images/のパスが認識されてないのかなと推測しているのですが、モジュール内のscssをそのままインポートした場合において、其れにパスを通す場合、他にも何か設定が必要なのではないかと思っています。
それをnuxtにおいてどのように設定すればいいか教えていただけないでしょうか。

よろしくお願いします。

なお対象モジュールのフォルダ構成は以下のようになっていて画像ファイル自体は存在してることを確認しています。

node_modules + slickgrid + dist + slick.grid.variables.scss + slick.grid.scss + slick-default-theme.scss + images + sort_asc.gif ← 対象の画像は存在する。 + sort_desc.gif ← 対象の画像は存在する。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/11/15 22:09

画像はそれを表示する html からの相対パスを書かなければいけません。
tomomo

2020/11/16 01:31

モジュールにscssファイルが含まれていることは結構ある訳で、それを@import ...した際、その相対パスを適切に変換してくれる設定があるのではと思ったのです。 なければそれら一式を自身のプロジェクトに置くなりで自ら変換しなければならないですが、nuxt.config.tsの設定とかで何かやり方ないかなと。 多分buildの項目とか。
Zuishin

2020/11/16 01:42

画像は scss とは関係ないので、scss の位置を基準にするのは適切ではないでしょう。コンパイル後の css を html と同じディレクトリに出力すればいいのでは?
guest

回答1

0

自己解決

解決しました。
標準で組み込まれるwebpackの設定に対し、やはり追加のオプションが必要のようでした。
nuxt.config.tsに以下のようにbuildオプションを追加したところパス問題が解決され動きました。

vue

1// 2: 3 build: { 4 loaders: { 5 css: { 6 url: false 7 } 8 } 9 }

投稿2020/11/16 02:30

tomomo

総合スコア430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問