当前位置:  开发笔记 > 编程语言 > 正文

使用webpack在react组件中实现jwplayer的正确方法(react-starter-kit)

如何解决《使用webpack在react组件中实现jwplayer的正确方法(react-starter-kit)》经验,为你挑选了1个好方法。

我正在使用jwpalyer制作VideoPlayer反应组件,我正在使用webpack es6来加载模块webpack支持npm模块加载并且jwplayer没有npm

所以我试图使用es6 import包含jwplayer.js,但它给了我错误ReferenceError:window未定义

所以任何人都可以帮我正确设置webpack的jwplayer

  import React, { PropTypes, Component } from 'react';
  import $ from 'jquery';
  import Player from "./lib/jwplayer/jwplayer.js";
  import styles from './VideoPayer.css';
  import withStyles from '../../decorators/withStyles';
  import Link from '../Link';

  @withStyles(styles)
  class VideoPlayer extends Component {

    static propTypes = {
      className: PropTypes.string,
    };

    static defaultProps = {
      file: '',
      image: ''
    };

    constructor(props) {
      super(props);
      this.playerElement = document.getElementById('my-player');
    }


    componentDidMount() {
      if(this.props.file) {
        this.setupPlayer();
      }
    }

    componentDidUpdate() {
      if(this.props.file) {
        this.setupPlayer();
      }
    }

    componentWillUnmount() {
       Player().remove(this.playerElement);
    }

    setupPlayer() {
      if(Player(this.playerElement)) {
        Player(this.playerElement).remove();
      }

      Player(this.playerElement).setup({
        flashplayer: require('./lib/player/jwplayer.flash.swf'),
        file: this.props.file,
        image: this.props.image,
        width: '100%',
        height: '100%',
      });
    }

    render() {
      return (
        
) } } export default VideoPlayer;

Ngz.. 6

我想这就是你需要做的:

    将窗口定义为bundle的外部窗口,以便不破坏其他库中对它的引用.

    公开全局变量,jwplayer以便附加密钥

    (可选)为jwplayer库创建别名

我已经测试了它,这个配置适用于我,但只适用于客户端,而不是服务器上或同构/普遍的.

webpack.config.js:

// Declare window as external
externals: {
    'window': 'Window'
},
// Create an easy binding so we can just import or require 'jwplayer'
resolve: {
    alias: {
        'jwplayer':'../path/to/jwplayer.js'
    }
},
// Expose jwplayer as a global variable so we can attach the key, etc.
module: {
    loaders: [
        { test: /jwplayer.js$/, loader: 'expose?jwplayer' }
    ]
}

然后你可以import jwplayer from 'jwplayer'require('jwplayer').



1> Ngz..:

我想这就是你需要做的:

    将窗口定义为bundle的外部窗口,以便不破坏其他库中对它的引用.

    公开全局变量,jwplayer以便附加密钥

    (可选)为jwplayer库创建别名

我已经测试了它,这个配置适用于我,但只适用于客户端,而不是服务器上或同构/普遍的.

webpack.config.js:

// Declare window as external
externals: {
    'window': 'Window'
},
// Create an easy binding so we can just import or require 'jwplayer'
resolve: {
    alias: {
        'jwplayer':'../path/to/jwplayer.js'
    }
},
// Expose jwplayer as a global variable so we can attach the key, etc.
module: {
    loaders: [
        { test: /jwplayer.js$/, loader: 'expose?jwplayer' }
    ]
}

然后你可以import jwplayer from 'jwplayer'require('jwplayer').


有没有人有一个使用jwplayer与webpack的回购示例?
推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有