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

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

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

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

1回答

1140閲覧

【Laravel × Vue.js】VueのSPAプロジェクトをlaravel上で表示したい

nakamu

総合スコア82

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2021/04/07 10:32

編集2021/04/07 10:52

https://github.com/PanJiaChen/vue-element-admin
こちらのSPAプロジェクトをLaravel上で動かしたいのですが、モジュールが見つからないとエラーが表示されている状態です。

作業は、こちらを参照
Laravel SanctumとVue.jsによるSPA認証

まずは、githubにあったvue-element-adminこちらのプロジェクトをlaravelのresources/js/配下にクローン

laravelのroutes/web.phpを変更

php

1use Illuminate\Support\Facades\Route; 2 3Route::get('{any}', function () { 4 return view('index'); 5})->where('any', '.*');

laravelのviews/index.blade.phpの作成

larabvel

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 6 <meta name="csrf-token" content="{{ csrf_token() }}"> 7 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 8 <script src="{{ asset('js/main.js') }}" defer></script> 9 <title>Document</title> 10</head> 11<body> 12 <div id="app"> 13 <router-view /> 14 </div> 15</body> 16 17</html>

weback.mix.jsの変更

js

1const mix = require('laravel-mix'); 2 3mix.js('resources/js/app.js', 'public/js') 4 .js("resources/js/vue-element-admin/src/main.js", "public/js") 5 .js("resources/js/vue-element-admin/src/router/index.js", "public/js") 6 .sass('resources/sass/app.scss', 'public/css'); 7

laravelのresourcesディレクトリでnpm run devを実行

プロジェクト内のmain.jsはApp.vueを使わないのでコメントアウトしました。

import Vue from 'vue' import Cookies from 'js-cookie' import 'normalize.css/normalize.css' // a modern alternative to CSS resets import Element from 'element-ui' import './styles/element-variables.scss' import enLang from 'element-ui/lib/locale/lang/en'// 如果使用中文语言包请默认支持,无需额外引入,请删除该依赖 import '@/styles/index.scss' // global css import App from './App' import store from './store' import router from './router' import './icons' // icon import './permission' // permission control import './utils/error-log' // error log import * as filters from './filters' // global filters if (process.env.NODE_ENV === 'production') { const { mockXHR } = require('../mock') mockXHR() } Vue.use(Element, { size: Cookies.get('size') || 'medium', // set element-ui default size locale: enLang // 如果使用中文,无需设置,请删除 }) // register global utility filters Object.keys(filters).forEach(key => { Vue.filter(key, filters[key]) }) Vue.config.productionTip = false new Vue({ el: '#app', router, store, //こちらを↓コメントアウト // render: h => h(App) })

追記
エラー文 npm run devを実行した際、複数のjsファイルで同じエラーがたくさん表示される
ERROR in ./resources/js/vue-element-admin/src/router/modules/nested.js
Module not found: Error: Can't resolve '@/views/nested/menu1/menu1-1' in '/Users/~~~~~~~~~/resources/js/vue-element-admin/src/router/modules'
@ ./resources/js/vue-element-admin/src/router/modules/nested.js 26:15-53
@ ./resources/js/vue-element-admin/src/router/index.js
@ multi ./resources/js/vue-element-admin/src/router/index.js

ブラウザ
ここでも同じようにモジュールの読み込みでエラー
Uncaught Error: Cannot find module '@/styles/index.scss'

参照リンクの方は特にモジュールに対して何かしてたわけではなかったのでうまくいくと思ったのですができず。

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

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

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

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

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

Lulucom

2021/04/07 10:42

> モジュールが見つからないとエラーが表示されている状態です。 エラーメッセージを掲載しましょう。エラーメッセージが一番重要な手がかりだと思います。
nakamu

2021/04/07 10:53

失礼いたしました!追加いたしました
guest

回答1

0

自己解決

Laravelに組み込まれる想定で作られていないので、これをLaravelのresouces/jsの構成に変えるのは大変だとわかりました。
使用する場合は、Laravelのpublicにビルドしたものを置くような形がベストと判断しました

投稿2021/04/12 14:42

nakamu

総合スコア82

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問