javascript - 从YouTube Iframe API meteor 包导入YT和YTConfig

标签 javascript node.js meteor iframe youtube

我们正在使用adrianliaw:youtube-iframe-api包在我们的项目中显示youtube iframe。

以前这很好,但是我们决定将项目的某些部分移到自己的程序包中。之后,我似乎无法将YTYTConfig对象导入到我们的packge中。

这就是我所拥有的:
package.js:

Package.onUse(function(api) {
    api.versionsFrom('METEOR@0.9.1.1');

  // API Use - Both client and server
  api.use([
    'ecmascript',
    'templating',
    'fourseven:scss'
  ], ['client', 'server']);

  // API Use - Client only
  api.use([
    'adrianliaw:youtube-iframe-api'
  ], ['client']);
});
youtube-display.js:
import { YT, YTConfig } from 'meteor/adrianliaw:youtube-iframe-api';

/**
 * Video display controller
 * Assuming youtube-only for now
 */

// 3. This function creates an <iframe> (and YouTube player)
//    after the API code downloads.
var player,
    videoId,
    videoElement,
    isPreview = false,
    isMuted = false;

onYouTubeIframeAPIReady = function() {
    player = new YT.Player(videoElement, {
        height: window.innerHeight,
        width: window.innerWidth,
        videoId: videoId,
        playerVars: {
            controls: 0,
            showinfo: 0,
            modestbranding: 1,
            iv_load_policy: 3,
            rel: 0
        },
        events: {
            onReady: function (event) {
                if ( ! isPreview ) {
                    // Play video when player ready.
                    event.target.playVideo();

                    if ( isMuted ) {
                        event.target.mute();
                    }
                }
            }
        }
    });
}

Template.HBModule_youtube_Display.onCreated(function() {
    videoId = Template.instance().data.media.youtubeId;

    if ( Template.instance().data.preview ) {
        isPreview = true;
    }

    if ( Template.instance().data.muted ) {
        isMuted = true;
    }
});

Template.HBModule_youtube_Display.onRendered(function() {
    videoElement = Template.instance().$('.module__video')[0];

    // Start
    YT.load();
});

Template.HBModule_youtube_Display.onDestroyed(function() {
    player.destroy()
});

我收到此错误:_adrianliawYoutubeIframeApi.YT.load is not a function

就像我说的,减去显示文件顶部的导入,这一切在以前都是完美的。

任何帮助,将不胜感激。谢谢!

最佳答案

诀窍是摆脱youtube-display.js顶部的导入,并按照此SO答案将onYouTubeIframeAPIReady函数更改为window.onYouTubeIframeAPIReady:https://stackoverflow.com/a/16701359/5463842

编辑:哦!而且,像我一样,使用旧版本将@1.3.122添加到软件包中。

关于javascript - 从YouTube Iframe API meteor 包导入YT和YTConfig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38960760/

相关文章:

javascript - 使用不同的参数从 C# 多次调用 javascript 函数

javascript - 我输入的输入值没有显示在 JavaScript 中

javascript - VueJS 如何将计算属性与 v-for 一起使用

node.js - nodejs - npm install https,不起作用

javascript - 如何使用 Iron Router 获取 domain.com/keyword 中的 'keyword'

javascript - 文本如何变得可点击?

node.js - 参数错误必须是 react 元素,但您传递了未定义

javascript - NodeJS mysql同步查询

twitter-bootstrap - 如何将 bootstrap popover 与 selected 一起使用?

javascript - 更新数组内的对象 MongoDB Meteor