Мои компоненты vue не отображаются на странице, несмотря на следующие уроки.У меня есть следующий макет (master.blade.php):
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="/favicon.ico">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>Mileage</title>
<link rel="stylesheet" href="{{ mix('/css/app.css') }}" media="all">
</head>
<body>
<div id="app">
<example-component></example-component>
</div>
<script src="{{ mix('/js/app.js') }}"></script>
</body>
</html>
Макет возвращается следующим контроллером (я использую CAS для входа в систему):
<?php
namespace App\Http\Controllers;
use App\LkpStaff;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function login()
{
if (!cas()->isAuthenticated())
{
cas()->authenticate();
}
$user = cas()->user();
$dbUser = LkpStaff::where('user_name', $user)->first(['staff_refid']);
if ($dbUser)
{
$userId = $dbUser->staff_refid;
}else
{
$userId = $this->createNewUser($user);
}
session()->put('casUser', $user);
session()->put('userId', $userId);
return view('master', [
'casUser' => $user,
'userId' => $userId
]);
}
}
Вход в систему CASработает как задумано, так что это не проблема.Я просто пытаюсь отобразить пример компонента, который поставляется с laravel (ExampleComponent.vue):
<template>
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Example Component</div>
<div class="card-body">
I'm an example component.
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
mounted() {
console.log('Component mounted.')
}
}
</script>
Мой файл app.js регистрирует компонент, как и ожидалось:
require('./bootstrap');
window.Vue = require('vue');
Vue.component('example-component', require('./components/ExampleComponent.vue'));
const app = new Vue({
el: '#app'
});
Мой пакет.json выглядит следующим образом:
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "npm run development -- --watch",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"axios": "^0.18",
"bootstrap": "^4.0.0",
"cross-env": "^5.1",
"jquery": "^3.2",
"laravel-mix": "^4.0.7",
"lodash": "^4.17.5",
"popper.js": "^1.12",
"resolve-url-loader": "^2.3.1",
"sass": "^1.15.2",
"sass-loader": "^7.1.0",
"vue": "^2.5.17",
"vue-template-compiler": "^2.6.10"
},
"dependencies": {
"bulma": "^0.7.0",
"font-awesome": "^4.7.0",
"laravel-blade-compiler": "^1.0.10",
"moment": "^2.24.0",
"purify-css": "^1.2.5"
}
}
Я использовал npm install и npm run dev.Я обслуживал проект с php artisan serve.Страница выглядит так (в консоли браузера):
<html><head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="/favicon.ico">
<meta name="csrf-token" content="gLzt6ZloAyL7kFEVuO0tHlv6XqlsCMlELSx9Eqg6">
<title>Mileage</title>
<link rel="stylesheet" href="/css/app.css" media="all">
</head>
<body>
<div id="app">
<example-component></example-component>
</div>
<script src="/js/app.js"></script>
</body></html>
Как видите, компонент не отображается.В консоли также нет ошибок.Могу ли я что-нибудь сделать, кроме создания нового проекта?