3

Jetstream オプションを使用してインストーラーによって作成された新しい Laravel プロジェクトにresources/js/app.jsは、次の行があります。 Vue.mixin({ methods: { route } });

PHPStormrouteは、未解決の変数または型であると報告します。これが発生すると、PHPStorm が間違っている可能性があります。新しく作成されたアプリケーションでは、これによってエラーが発生することはありません。

ただし、既存のプロジェクトを Laravel 8.10.0 にアップグレードし、composer を介して Jetstream をインストールすると、これ原因で問題が発生します。これを実行しnpm run devてもエラーにはなりませんが、ブラウザはapp.js:44258 Uncaught ReferenceError: route is not defined.

私は違いを見つけることができません、app.jsまたはbootstrap.jsそれがこれを引き起こすでしょう。アップグレードで正しく行われたかどうかを確認できるように、これはどこにインポートまたは含まれますか?

4

2 に答える 2

0

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 ルートではありません...解決しなければならない競合があると思いますが、それは別の問題です

于 2020-10-23T09:33:13.180 に答える