javascript - 解决 ESLint 错误 "no-unused-vars"

标签 javascript youtube-api eslint

错误

由于以下 eslint 错误,模块构建失败:

Error 1: 'player' is assigned a value but never used no-unused-vars

Error 2: 'YT' is not defined no-undef

Error 3: 'onYouTubeIframeAPIReady' is defined but never used no-unused-vars

代码

function videoInit() {
    // Initialise video
    var tag = document.createElement('script');
    tag.src = "https://www.youtube.com/iframe_api";
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

    // Initialise the player
    var player;

    function onPlayerReady(event) {
        event.target.playVideo();
    }

    function onPlayerStateChange(event) {
        if (event.data === YT.PlayerState.ENDED) {
            event.target.playVideo();
        }
    }
    
    function onYouTubeIframeAPIReady() { 
        player = new YT.Player('player', {
            height: '100%',
            width: '100%',
            videoId: 'ScMzIvxBSi4',
            playerVars : {
                'mute' : 1,
            },
            events: {
                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange,
            },
        });
    }
}

目标

解决no-unused-varsno-undef错误。

函数调用不存在于本地文件中,而是来自 YouTube API,如 documentation :

onYouTubeIframeAPIReady – The API will call this function when the page has finished downloading the JavaScript for the player API, which enables you to then use the API on your page. Thus, this function might create the player objects that you want to display when the page loads.

可以通过使用忽略错误no-unused-vars /* eslint-disable no-unused-vars */,但我相信有更好的方法来解决这些问题。

非常感谢任何建议。

最佳答案

此函数应可作为全局变量(= window 对象的属性)。就目前情况而言,它只是一个本地的,可以在 videoInit() 中使用 - 但不能从外部调用。所以 ESLint 在这一点上实际上是正确的。

使用类似于...的东西

window.onYouTubeIframeAPIReady = onYouTubeIframeAPIReady;

对于player,如果您打算使用new YT.Player()调用的返回值(播放器实例),则只需要此变量。在这种特殊情况下,您不会使用它,因此会出现警告。考虑将 videoInit 转换为返回 Promise 的函数(通过 player 值解析)。

关于javascript - 解决 ESLint 错误 "no-unused-vars",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48322152/

相关文章:

javascript if 语句检查 div 是否可见不起作用

javascript - jQuery - 使用像 "dragover"这样的 JS 事件

javascript - 使用输入作为提交按钮的 html 表单

Javascript Lint 错误

javascript - 使用 AJAX 发送数据但 PHP 输出 undefined_index

javascript - 通过CORS上传YouTube API

javascript - YouTube API getRating "none"或 "unspecified"

javascript - YouTube API - 动态添加事件监听器

visual-studio-code - 如何让 VSCode 使用全局 eslint 而不是本地 eslint

reactjs - 运行测试时出现"unexpected token import"错误