错误
由于以下夹板错误,模块构建失败:
错误1:'播放器'被分配了一个值,但从未使用 no-unused-vars
错误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 & no-undef 错误。
功能调用不在本地文件中,而是根据documentation从YouTube API中提供:
onYouTubeIframeAPIReady
- 当页面完成下载播放器API的JavaScript后,API将调用此函数,这样您就可以在页面上使用API。因此,此功能可能会创建您在页面加载时要显示的播放器对象。
可以通过使用忽略错误 no-unused-vars
/* eslint-disable no-unused-vars */
,但我确信有更好的方法来解决这些问题。
非常感谢任何建议。
答案 0 :(得分:2)
此函数应该可用作全局变量(= window
对象的属性)。就目前而言,它只是一个本地的,在videoInit()
内可用 - 但不能从外部调用。所以ESLint实际上是正确的。
使用与...类似的东西。
window.onYouTubeIframeAPIReady = onYouTubeIframeAPIReady;
对于player
,如果您打算使用new YT.Player()
调用的返回值(播放器实例),则只需要此变量。在这种特殊情况下,您不使用它,因此警告。考虑将videoInit
转换为返回Promise的函数(使用player
值解析)。