Laravelにてnpm run buildを実行してもUnable to locate file in Vite manifest:resources/js/flowbite.js.と叱られる件

投稿者:

はじめに

週末は主人とモーターサイクルショーに行ってきました。楽しかった。

さて表題の件。
正直、正しく解決はしてないかもしれない。

定石通りに

まず、LaravelさんのUIがLaravel Viteになってるとは思わなかった浦島太郎状態から始まります。
ウマ娘やってる間に変わったんか?w

今回はLaravel ViteとTailwind CSS、Flowbiteを導入したコードをもらい、Dockerで動かします。

vite.config.jsは以下のとおり。

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
    ],
});

tailwind.config.js は以下のとおり。

/** @type {import('tailwindcss').Config} */
module.exports = {
    content: [
        "./resources/**/*.blade.php",
        "./resources/**/*.js",
        "./resources/**/*.vue",
        "./node_modules/flowbite/**/*.js",
    ],
    theme: {
        extend: {},
    },
    plugins: [require("flowbite/plugin")],
};

この状態で

npm run dev

を投げた状態では画面が見えるんですが、ターミナルを落とすとコマンドが切れてしまう。

npm run build

でpublic/build/配下にファイルができる。手筈です。

https://biz.addisteria.com/laravel_vite_errors/

叱られる

本当はこれで動く筈が。

Unable to locate file in Vite manifest: resources/js/flowbite.js.

だそうです。
生成された public/build/manifest.json を見に行く。

{
  "resources/css/app.css": {
    "file": "assets/app-xxxxxxx.css",
    "isEntry": true,
    "src": "resources/css/app.css"
  },
  "resources/js/app.js": {
    "file": "assets/app-xxxxxxx.js",
    "isEntry": true,
    "src": "resources/js/app.js"
  }
}

定石通りファイルはできている。

めちゃくちゃ資料を読み込んでも npm run build 以上のことは書いてない。
いないのはapp.jsとかではなくてresources/js/flowbite.js.。(ここ勘違いしていて時間を潰してしまった)
resourcesにはちゃんとflowbite.jsがいる。

ならば、とviewファイルの方のflowbiteを呼び出している箇所を削ってみたところ、
一部画面が表示されました。

resourcesにいるだけじゃダメで、public/build/manifest.jsonにいないといけない。
npm run buildの結果は以下のとおり。

% npm run build

> build
> vite build

vite v4.2.1 building for production...
✓ 2 modules transformed.
Generated an empty chunk: "app".
public/build/manifest.json             0.26 kB
public/build/assets/app-xxxxxxx.css  42.37 kB │ gzip: 7.47 kB
public/build/assets/app-xxxxxxx.js    0.00 kB │ gzip: 0.02 kB
✓ built in 1.71s

そっちか

我流かも知れないけれど。
vite.config.jsを修正します。

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js', 'resources/js/flowbite.js'],
            refresh: true,
        }),
    ],
});

上記のように修正してbuild。
public/build/manifest.jsonに定義が追加され、ファイルが配置されました。

{
  "resources/css/app.css": {
    "file": "assets/app-xxxxxxx.css",
    "isEntry": true,
    "src": "resources/css/app.css"
  },
  "resources/js/app.js": {
    "file": "assets/app-xxxxxxxx.js",
    "isEntry": true,
    "src": "resources/js/app.js"
  },
  "resources/js/flowbite.js": {
    "file": "assets/flowbite-xxxxxxxx.js",
    "isEntry": true,
    "src": "resources/js/flowbite.js"
  }
}

そして画面が正しく表示されました。

これでいいのか

正直、これでいいのか疑問は残ります。

https://larainfo.com/blogs/install-flowbite-tailwind-css-with-laravel-9-vite

https://medium.com/themesberg-blog/how-to-install-flowbite-and-tailwind-css-with-laravel-db9e1711d768

異国の資料を見る限り、vite.config.jsは触れていないもんなぁ。

しばし様子見をします。

コメントを残す