Как мне `eslint` мой JavaScript, когда это зависит от объектов из ранее загруженных скриптов? - PullRequest
1 голос
/ 13 января 2020

Я хочу добавить eslint к моему плагину WordPress. Но я продолжаю получать сообщение об ошибке с неопределенным именем. Во время выполнения имя определяется ранее загруженным скриптом в браузере. Как я могу заставить eslint признать, что с этим конкретным именем все в порядке?

Ошибка от eslint ::

/js/plugin.js
    13:12   error  'Cookies' is not defined                                    no-undef

Мой плагин php загружает javascript файлы в WordPress, используя wp_enqueue_script. javascript моего плагина зависит от jquery и js -cook ie, а js -cook ie зависит от jquery. Поэтому Wordpress гарантирует, что для js -cook ie будет предшествовать для моего плагина.

плагин. php:

    wp_enqueue_script( 'js-cookie', $path . 'inc/js.cookie.min.js', array( 'jquery' ), '1.0.0', true );
    wp_enqueue_script( 'plugin-js', $path . 'js/plugin.min.js', array( 'jquery', 'js-cookie' ), '1.2.1', true );

Мой плагин javascript использует объект Cookies для выполнения различных задач.

плагин. js:

(function($) {
    $.ajax({
        url: '/wp-json/plugin-name/v1/method',
        dataType: 'json',
        success: function( data ) {
            process( data );
        },
        error: function(e) {
            console.log(e);
        }
    });
    function process(data) {
        if (Cookies.get('cookie-name'){
            ...
        }
    }
}(jQuery));

Ответы [ 2 ]

1 голос
/ 13 января 2020

Вы можете указать Cookies как внешне определенный «глобальный» в файле, в котором вы его используете. Добавьте это в начало plugin.js:

/* global Cookies */

Вы также можете объявить это в файле конфигурации, но это менее вероятно, будет полезно для вас, учитывая, что это звучит как вы также определяете Cookies (и, следовательно, не должен быть объявлен как ранее существовавший глобал в файле, в котором вы его определяете).

См. документацию ESLint. при указании глобалов.

0 голосов
/ 13 января 2020

ESLint будет только анализировать файл, в котором он находится, он не имеет больше контекста, чем этот. Вы можете игнорировать правило, добавив // eslint-disable-line no-undef после if (Cookies.get('cookie-name') {

...