You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 8中使用video.js报错:video_js__WEBPACK_IMPORTED_MODULE_1__ is not a function

解决Angular 8中使用Video.js时的TypeError: videojs is not a function问题

这个错误我之前帮不少开发者排查过,核心原因是导入方式和Video.js的模块导出结构不匹配,在Angular 8的TypeScript环境下,直接用import * as videojs from 'video.js'没法正确拿到Video.js的主函数入口。下面给你一步步的解决方案:

1. 调整导入方式

把原来的命名导入改成默认导入,这是最关键的一步:

// 替换原来的 import * as videojs from 'video.js';
import videojs from 'video.js';

如果TypeScript报错“找不到模块的默认导出”,就新建或修改src/typings.d.ts文件,添加类型声明:

declare module 'video.js' {
  export default function videojs(el: Element, options?: Record<string, any>, ready?: () => void): any;
}

2. 确认Video.js版本兼容性

Angular 8属于比较早期的版本,建议安装和它兼容的稳定版Video.js,比如6.x系列:

npm install video.js@6.6.3 --save

3. 检查模板中的视频元素

确保你的组件模板里有正确的#myplayer标记的video元素,还要加上Video.js的默认样式类:

<video #myplayer class="video-js vjs-big-play-centered" playsinline></video>

4. 修正播放器初始化代码

调整后的初始化方法可以加上基础配置和错误处理,避免意外崩溃:

initPlayer() {
  if (!this.videoElement.nativeElement) return;
  
  try {
    const player = videojs(this.videoElement.nativeElement, {
      controls: true,
      autoplay: false,
      preload: 'auto',
      fluid: true
    });
    
    // 这里可以添加视频源配置
    player.src({
      type: 'video/mp4',
      src: '你的视频文件地址'
    });
  } catch (error) {
    console.error('Video.js播放器初始化失败:', error);
  }
}

额外配置:引入Video.js样式

别忘了在angular.json的styles数组里添加Video.js的CSS文件,不然播放器样式会乱掉:

"styles": [
  "src/styles.css",
  "node_modules/video.js/dist/video-js.min.css"
]

内容的提问来源于stack exchange,提问作者Rahul Tiwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:58:25