Vue Неразрешенная переменная PhpStorm - PullRequest
0 голосов
/ 29 июня 2019

У меня есть сценарий Vue. Когда я отлаживал его с помощью PhpStorm, я получал ошибку синтаксиса Unresolved variable, даже если я установил переменную redirect_to. Пожалуйста, проверьте изображение. Как я могу решить это?

<script>
                const timeToRefetch = 2000;
                let intervalRef;

                const homePageUrl = "/";
                let messageCount = 0;


                var app = new Vue({
                    el: "#app",
                    data: {
                        status: "",
                        message: "",
                        redirect_to: ""
                    },
                    created() {
                        const refThis = this;
                        intervalRef = setInterval(() => {
                            fetch(ApiUrl)
                                .then(response => response.json())
                                .then(repos => {
                                        refThis.status = repos.status;
                                        this.message = repos.message;
                                        clearInterval(intervalRef);
                                        setTimeout(() => {
                                            window.location.href = repos.redirect_to;
                                        }, 3000);
                                    },
                                );
                        }, timeToRefetch);
                    }
                });
            </script>

enter image description here

1 Ответ

1 голос
/ 29 июня 2019

Если вы используете в своем коде какой-либо объект с ключами, которые известны только во время выполнения (сгенерированы, получены через вызов ajax и т. Д.), То IDE не сможет разрешить их с помощью статического анализа кода.Но вы можете сообщить IDE, как выглядят ваши данные во время выполнения.Возможное решение с использованием аннотаций JSDoc:

/**
     * @typedef {Object} repos
     * @property {string} status
     * @property {string} message
     * @property {string} redirect_to
     *
     */
...
 var app = new Vue({
        el: "#app",
        data: {
            status: "",
            message: "",
            redirect_to: ""
        },
        created() {
            const refThis = this;
            intervalRef = setInterval(() => {
                fetch(ApiUrl)
                    .then(response => response.json())
                    .then(
                        /**
                         * @param {repos} repos
                         */
                        (repos) => {
                            refThis.status = repos.status;
                            this.message = repos.message;
                            clearInterval(intervalRef);
                            setTimeout(() => {
                                window.location.href = repos.redirect_to;
                            }, 3000);
                        },
                    );
            }, timeToRefetch);
        }
    });

См. Также https://youtrack.jetbrains.com/issue/WEB-17419#comment=27-1058451, https://intellij -support.jetbrains.com / hc / en-us / community / posts / 206349469-disable-вызов unresolved-variable-on-json-object-by-by-ajax для других возможных обходных путей

...