【发布时间】:2017-11-19 06:31:21
【问题描述】:
问题:
如何让@vimeo/player 处理我的 Angular2/Typescript 项目(特别是 Ionic2)?
说明:
试图让 vimeo player 与 Angular2/Typescript 一起工作。
npm install --save @vimeo/player
根据他们的文档,可以像这样使用该库:
如果您使用的是 webpack 或 rollup 之类的模块捆绑器,则导出的 对象将是 Player 构造函数(与它所在的浏览器不同 附加到 window.Vimeo):
import Player from '@vimeo/player';
const player = new Player('handstick', {
id: 19231868,
width: 640
});
player.on('play', function() {
console.log('played the video!');
});
看起来超级有前途!但不起作用。
我尝试过的:
我已经安装了@vimeo/player 和@types/vimeo__player
我在 Ionic2 应用中创建了一个播放器组件。
player.ts:
import {Component, ViewChild} from '@angular/core';
import {NavController} from "ionic-angular/index";
//noinspection TypeScriptCheckImport,TypeScriptCheckImport
import Player from "@vimeo/player";
@Component({
selector: 'player-component',
templateUrl: 'player.html'
})
export class PlayerComponent {
@ViewChild('player_container') playerContainer;
private player: Player;
constructor(public navCtrl: NavController){}
ngAfterViewInit() {
// child is set
this.player = new Player(this.playerContainer);
console.log(Player);
}
}
我使用 view child,但我也尝试过使用元素的 ID。
player.html
<div #player_container></div>
并得到以下错误:
Uncaught (in promise): TypeError: You must pass either a valid element 或有效身份证件。玩家@http://localhost:8100/build/main.js:102846:32 ngAfterViewInit@http://localhost:8100/build/main.js:74715:80 callProviderLifecycles@http://localhost:8100/build/main.js:11417:33 callElementProvidersLifecycles@http://localhost:8100/build/main.js:11392:35 callLifecycleHooksChildrenFirst@http://localhost:8100/build/main.js:11376:47 checkAndUpdateView@http://localhost:8100/build/main.js:12408:36 callWithDebugContext@http://localhost:8100/build/main.js:13462:47 检测变化@http://localhost:8100/build/main.js:10474:81 _viewAttachToDOM@http://localhost:8100/build/main.js:43884:53 _transition@http://localhost:8100/build/main.js:43976:34 onInvoke@http://localhost:8100/build/main.js:4406:43 运行@http://localhost:8100/build/polyfills.js:3:4146 http://localhost:8100/build/polyfills.js:3:13734 onInvokeTask@http://localhost:8100/build/main.js:4397:47 运行任务@http://localhost:8100/build/polyfills.js:3:4841 o@http://localhost:8100/build/polyfills.js:3:1898 调用@http://localhost:8100/build/polyfills.js:3:10674
如您所见,它编译但在运行时崩溃。
@types/vimeo__player 只是似乎没有完成,甚至在我导入@vimeo/player时似乎都没有注意到
issue on github regarding vimeo__player 似乎表明这是真的。
看起来模块解析正确地将其解析为 JS 模块,但仅仅是因为它没有首先找到类型。你确定吗 您是否正确包含了这些类型? --listFiles 会告诉你,如果 包括在内。
附加:
【问题讨论】:
标签: angular typescript ionic2 typescript2.0 vimeo-player