kokh log

主にフロントエンドの備忘録

Next.jsでvideoをimportする

publicディレクトリが使えないという制約があり、
Next.jsのコンポーネント内でmp4といった動画メディアをimportする必要がありました。
初期値は動画メディア用のloaderが設定されていないため、
import MOVIE from "../assets/movie.mp4" のようにimportすることができません。

解決策

next-videos - npm を利用します。 内部的にはfile-loaderで変換されているようです。

next.config.js を以下のように書き換えます。

// next.config.js

const withVideos = require("next-videos");

const nextConfig = {
 ...
};

module.exports = withVideos(nextConfig);

型定義で怒られたので定義します。

declare module "*.mp4" {
  const src: string;
  export default src;
}

これでvideo要素をimportし表示させることできるようになりました。

import Movie from "../assets/title.mp4";

export function Movie() {
  return  <video src={Movie} />
}