Laravel Jetstream Vue 混合路由
Laravel Jetstream Vue mixin route
在安装程序使用 Jetstream 选项创建的新 Laravel 项目中 resources/js/app.js
有一行内容如下:
Vue.mixin({ methods: { route } });
PHPStorm 报告 route
是一个未解析的变量或类型。出现这种情况,PHPStorm 可能会出错。在新创建的应用程序中,这不会导致错误。
但是,当我将现有项目升级到 Laravel 8.10.0 并通过 composer 安装 Jetstream 时,这 确实 导致和问题。当运行这个npm run dev
不报错,但是浏览器会报app.js:44258 Uncaught ReferenceError: route is not defined
.
我发现 app.js
或 bootstrap.js
没有什么不同会导致这种情况。这是从哪里导入或包含的,以便我可以检查它是否在我的升级中正确完成?
新创建的应用程序和更新都创建了一个包含 @routes
指令的 Blade 模板。当我比较现有文件时,我没有注意到这种差异。
这可以通过在加载主脚本之前在 blade 模板中包含 @routes
指令来纠正,如 installation guide for ziggy.
中所述
在 ToothlessRebel 的建议下,我是这样解决我的错误的:
第 1 步命令行:
composer require tightenco/ziggy
npm install ziggy-js
php artisan ziggy:generate "resources/js/ziggy.js"
第 2 步:修改 webpack.mix.js:
mix.js('resources/js/app.js', 'public/js')
...
.webpackConfig(require('./webpack.config'));
并且在 ./webpack.config 中:
const path = require('path');
module.exports = {
resolve: {
alias: {
'@': path.resolve('resources/js'),
ziggy: path.resolve('vendor/tightenco/ziggy/src/js/route.js'),
},
},
};
第 3 步:app.js:
import route from 'ziggy';
import {
Ziggy
} from './ziggy';
...
Vue.mixin({
methods: {
route: (name, params, absolute) => route(name, params, absolute, Ziggy),
},
});
...
new Vue({
el: "#app",
render: (h) =>
h(InertiaApp, {
props: {
initialPage: JSON.parse(app.dataset.page),
resolveComponent: (name) => require(`./Pages/${name}`).default,
},
}),
});
最后是一个命令:npm run dev
所以,我的仪表板和所有 mixin/ziggy 路线都在工作...
不再是我的 vue-router 路线......我想我有一个冲突我必须解决,但这是另一个问题
在安装程序使用 Jetstream 选项创建的新 Laravel 项目中 resources/js/app.js
有一行内容如下:
Vue.mixin({ methods: { route } });
PHPStorm 报告 route
是一个未解析的变量或类型。出现这种情况,PHPStorm 可能会出错。在新创建的应用程序中,这不会导致错误。
但是,当我将现有项目升级到 Laravel 8.10.0 并通过 composer 安装 Jetstream 时,这 确实 导致和问题。当运行这个npm run dev
不报错,但是浏览器会报app.js:44258 Uncaught ReferenceError: route is not defined
.
我发现 app.js
或 bootstrap.js
没有什么不同会导致这种情况。这是从哪里导入或包含的,以便我可以检查它是否在我的升级中正确完成?
新创建的应用程序和更新都创建了一个包含 @routes
指令的 Blade 模板。当我比较现有文件时,我没有注意到这种差异。
这可以通过在加载主脚本之前在 blade 模板中包含 @routes
指令来纠正,如 installation guide for ziggy.
在 ToothlessRebel 的建议下,我是这样解决我的错误的:
第 1 步命令行:
composer require tightenco/ziggy
npm install ziggy-js
php artisan ziggy:generate "resources/js/ziggy.js"
第 2 步:修改 webpack.mix.js:
mix.js('resources/js/app.js', 'public/js')
...
.webpackConfig(require('./webpack.config'));
并且在 ./webpack.config 中:
const path = require('path');
module.exports = {
resolve: {
alias: {
'@': path.resolve('resources/js'),
ziggy: path.resolve('vendor/tightenco/ziggy/src/js/route.js'),
},
},
};
第 3 步:app.js:
import route from 'ziggy';
import {
Ziggy
} from './ziggy';
...
Vue.mixin({
methods: {
route: (name, params, absolute) => route(name, params, absolute, Ziggy),
},
});
...
new Vue({
el: "#app",
render: (h) =>
h(InertiaApp, {
props: {
initialPage: JSON.parse(app.dataset.page),
resolveComponent: (name) => require(`./Pages/${name}`).default,
},
}),
});
最后是一个命令:npm run dev
所以,我的仪表板和所有 mixin/ziggy 路线都在工作... 不再是我的 vue-router 路线......我想我有一个冲突我必须解决,但这是另一个问题