错误
模块生成失败,原因是下列eslint错误:
错误1:为“no-unused-vars player”分配了一个值,但从未使用过 错误2:“YT”未定义no-undef 错误3:定义了'onYouTubeIframeAPIReady‘,但从未使用过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-vars &的错误。
函数调用不存在于本地文件中,而是来自YouTube API (按文档 )。
onYouTubeIframeAPIReady-当页面下载完player API的JavaScript后,API将调用此函数,这使您能够在页面上使用API。因此,此函数可能会创建要在页面加载时显示的player对象。
可以通过使用no-unused-vars忽略错误/* eslint-disable no-unused-vars */,但我相信有更好的方法来解决这些问题。
如有任何建议,将不胜感激。
发布于 2018-01-18 13:16:52
这个函数应该作为全局变量(= window对象的属性)可用。目前,它只是一个本地的,可以在videoInit()中使用-但不能从外部调用。所以ESLint在这一点上是对的。
用一些类似于..。
window.onYouTubeIframeAPIReady = onYouTubeIframeAPIReady;至于player,只有当您打算使用new YT.Player()调用的返回值(player的实例)时,才需要这个变量。在这种特殊情况下,您不使用它,因此出现了警告。考虑将videoInit转换为返回诺言的函数(用player值解析)。
https://stackoverflow.com/questions/48322152
复制相似问题