kotaro-ktr
@kotaro-ktr (Kotaro Tanaka)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

laravelでModule not found: Errorが出てしまった

Q&A

Closed

解決したいこと

laravelにてvuejsの環境を導入しようとしたところ、

Module not found: Error: Can't resolve 'laravel-vite-plugin/inertia-helpers'

と出てしまい、npm run dev が停止してしまいました。
解決方法を教えていただけると助かります。

発生している問題・エラー

image.png

該当するソースコード

resources/js/app.js

import './bootstrap';
import '../css/app.css';

import { createApp, h } from 'vue';
import { createInertiaApp } from '@inertiajs/inertia-vue3';
import { InertiaProgress } from '@inertiajs/progress';
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
import { ZiggyVue } from '../../vendor/tightenco/ziggy/dist/vue.m';

const appName = window.document.getElementsByTagName('title')[0]?.innerText || 'Laravel';

createInertiaApp({
    title: (title) => `${title} - ${appName}`,
    resolve: (name) => resolvePageComponent(`./Pages/${name}.vue`, import.meta.glob('./Pages/**/*.vue')),
    setup({ el, app, props, plugin }) {
        return createApp({ render: () => h(app, props) })
            .use(plugin)
            .use(ZiggyVue, Ziggy)
            .mount(el);
    },
});

InertiaProgress.init({ color: '#4B5563' });

/package.json

{
    "private": true,
    "scripts": {
        "dev": "npm run development",
        "development": "mix",
        "watch": "mix watch",
        "watch-poll": "mix watch -- --watch-options-poll=1000",
        "hot": "mix watch --hot",
        "prod": "npm run production",
        "production": "mix --production",
        "build": "vite build",
        "start": "vite"
    },
    "devDependencies": {
        "@inertiajs/inertia": "^0.11.0",
        "@inertiajs/inertia-vue3": "^0.6.0",
        "@inertiajs/progress": "^0.2.7",
        "@tailwindcss/forms": "^0.5.2",
        "@vitejs/plugin-vue": "^2.3.3",
        "autoprefixer": "^10.4.2",
        "axios": "^0.21",
        "laravel-mix": "^6.0.6",
        "lodash": "^4.17.19",
        "postcss": "^8.4.6",
        "tailwindcss": "^3.1.0",
        "vue": "^3.2.31"
    }
}

/vite.config.js

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
    plugins: [
        laravel({
            input: 'resources/js/app.js',
        }),
        vue({
            template: {
                transformAssetUrls: {
                    base: null,
                    includeAbsolute: false,
                },
            },
        }),
    ],
});

自分で試したこと

環境構築時、以下のコマンドを実行しました。

composer create-project laravel/laravel --prefer-dist

composer require laravel:breeze --dev

php artisan breeze:install

npm install 

npm run dev //←ここでエラー発生

npm cache clean を使いキャッシュを消してみましたがうまくいきませんでした。

環境

laravel 8
php 7.4.29

0

3Answer

npm install --save-dev laravel-vite-plugin を実行して npm パッケージをインストールすれば直りそうです。

1Like

import.meta.glob('./Pages/**/*.vue') は Vite でしか使えない構文です。 npm run dev を実行すると Laravel Mix が webpack を使って JS をトランスパイルしますが、 webpack がこの構文を解釈できないため警告が出ます。

Vite を導入するなら Laravel Vite のインストール手順に従って Laravel Mix を置き換えてください: https://laravel-vite.dev/guide/quick-start.html

または、 Vite を入れずに、 Laravel Mix で Vue.js を使うように設定してください。方法は Laravel Mix Vue.js で検索すればいくつか見つかります。

1Like

Comments

  1. @kotaro-ktr

    Questioner

    ありがとうございます!やってみます!

ありがとうございます。パッケージ不足でした。

コマンドを実行したところ、新たなエラーがでました。

WARNING in ./resources/js/app.js 16:65-76
Critical dependency: Accessing import.meta directly is unsupported (only property access is supported)

直訳でimport.metaでのアクセスはサポートされてなく、プロパティでのアクセスのみサポートされいるとのことです。

/resources/js/app.js

resolve: (name) => resolvePageComponent(`./Pages/${name}.vue`, import.meta.glob('./Pages/**/*.vue')),

調べてみましたがプロパティでのアクセスが不明でした。
どなたか教えていただけますと助かります。

0Like

Your answer might help someone💌