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

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

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

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

595閲覧

Next.jsでMP3ファイルをimportしたい

shin_jrjr

総合スコア3

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2024/01/05 13:40

編集2024/01/06 04:27

実現したいこと

・Next.jsでMP3ファイルをimportしたい。

前提

React、Next.jsを使ってタイマーアプリを作っています。

その際にMP3音源を使いたく、MP3ファイルをimportしようしているのですが、以下のようなエラーが出てimportできません。

正しくMP3ファイルをimportするための方法や、MP3を再生するための別の方法等ございましたら教えていただけますと幸いです。

よろしくお願いいたします。

発生している問題・エラーメッセージ

Module parse failed: Unexpected character ' • (1:3) You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders

該当のソースコード

JavaScript

1import timerSound from "@/audio/timer.mp3"; 2...中略... 3const audioTimer = new Audio({timerSound}); 4...中略... 5audioTimer.play(); 6 7---以下、next.config.jsに追加してみたルールです--- 8const nextConfig = { 9 module: { 10 rules: [ 11 { 12 test: /\.mp3$/, 13 use: [ 14 { 15 loader: 'file-loader', 16 }, 17 ], 18 }, 19 ], 20 }, 21};

試したこと

個人的にエラーの原因等を調べてみたところ、MP3ファイルの形式が認識されていないかMP3のファイルタイプにローダーを構成していないという原因が考えられたので、
file-loaderをインストールし、MP3ファイルを処理する上記のようなルールを「next.config.js」に追加してみました。

補足情報(FW/ツールのバージョンなど)

"react": "^18",
"next": "14.0.4",
"file-loader": "^6.2.0",

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2024/01/06 04:42

import timerSound from "@/audio/timer.mp3"; // ...中略... const audioTimer = new Audio(timerSound); // ...中略... audioTimer.play(); {}が不要では?
shin_jrjr

2024/01/06 04:49

貼って頂いたurl先に載っていたnext.config.jsのコードを参考にurl-loaderを使用することで、無事解決しました!! プログラミング初心者で質問するのも初めてだったので曖昧な点が多かったかと思いますが、ご回答いただき本当にありがとうございました!!🙇😊
退会済みユーザー

退会済みユーザー

2024/01/06 04:50

解決おめでとうございます! 解決方法をまとめて、「自己解決」として回答してください! 同じように困っている人の貴重な情報になると思います。
shin_jrjr

2024/01/06 04:51

おっしゃる通り{}を付けていたのもエラーの原因でした。。。 こちらも改善することで問題なく動作しました! ご丁寧にありがとうございました🙇🙇
guest

回答1

0

自己解決

【問題解決のために修正したこと】

・file-loaderではなくurl-loaderに変更
・「npm install url-loader --save-dev」でインストールし、next.config.jsに以下のコードを記述することでurl-loaderを追加

module.exports = { webpack(config) { config.module.rules.push({ test: /\.(ogg|mp3|wav|mpe?g)$/i, use: [ { loader: 'url-loader', options: { name: '[name]-[hash].[ext]', }, }, ], }); return config; }, };

・{}を取り除き、
const audioTimer = new Audio(timerSound);
に修正

【参考にしたurl】

https://github.com/vercel/next.js/discussions/12810

投稿2024/01/06 05:10

shin_jrjr

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問