webvideoctrl在vue中总是无法被引用到

使用webvideoctrl+vue做视频监控的功能,webvideoctrl.js是海康威视的web监控视频组件提供的纯js文件,我在对应vue文件中import它,source里面可以看到它被引用了,但是控制台一直在报
Uncaught ReferenceError: WebVideoCtrl is not defined
的错误,组件中引用的其它js文件和css文件都能正确引用

clipboard.png

页面上也没有视频的任何显示

clipboard.png

<template>

<div class="container">
    <el-form ref="form" :model="form"  label-width="80px" v-loading="loading">
<div class="listchoice">
        <label>选择通道</label>
        <select v-model="videoAddress" placeholder="请选择索要查看的视频监控地点" class="selected"  @change="clickStartRealPlay(videoaddress);">
            <option v-for="item in facaddress" :label="item.name" :value="item.id" :key="item.id"></option>
        </select>    
        <table cellpadding="0" cellspacing="3" border="0" style="display:none;">
        <tr>
            <td><input id="loginip" type="text" class="txt" v-model="form.ipAddr" /></td>
            <td><input id="port" type="text" class="txt" v-model="form.port" /></td>
        </tr>
        <tr>
            <td><input id="username" type="text" class="txt" v-model="form.username" /></td>
            <td><input id="password" type="password" class="txt" v-model="form.password"/></td>
        </tr>
    </table>
</div>
    <div class="video_info">
        <!--<video id="divPlugin" class="plugin" controls preload="auto" :style="'text-align:'+'center'">
                 <source   :src="videos" type="application/x-mpegURL">
        </video>-->
        <div id="divPlugin" class="plugin"></div>
    </div>

</el-form>

</div>

</template>
<script>

import  '../../../js/jquery-1.7.1.min.js'
import webVideoCtrlNU from '../../../js/webVideoCtrl.js'
import demoNU from '../../../js/demo.js'
var obj;

export default{

...webVideoCtrlNU,
...demoNU,
created(){
    this.$http({
                  method: 'get',
                  responseType : 'json',
                  url: this.$store.state.baseUrl+'/'+this.module+'/'+this.$route.params.id+'/',
                  params: {
                    access_token:this.$store.state.token
                  }
                }).then(response=>{
                    this.form=response.data
                    //this.$store.state.baseUrl+"/upload/image"+this.form.url
                }).catch(error => {
                         this.loading=false
                         
                    if (error.response) {
                        
                  // 请求已发出,但服务器响应的状态码不在 2xx 范围内
                          if(error.response.status==403){
                              this.$message({message:'登录过期',type:'error',showClose:true});
                              this.$store.commit('logout')
                              this.$router.push({ path: ('/login') })
                          }else if(error.response.status==401){
                              this.$message({message:'用户名/密码错误',type:'error',showClose:true});
                          }else if(error.response.status==400){
                              this.$message({message:error.response.data.msg,type:'error',showClose:true});
                          }
                        } 

// else {
// this.$message({message:'服务器异常,请联系管理员',type:'error',showClose:true});
// }

                       // console.log(error.config);
                    //this.$message({message:'用户名/密码错误',type:'error',showClose:true});
                    })
    
},
        
data(){
    return{
        loading:false,
        module:'videoConfig',
        factorys:[],
        facaddress:[],
        videoIp:[],
        query:{
        key:'',
        factoryId:'',
    },
        form:{
                
        },
    }
    
},
methods:{
    
    clickStartRealPlay(){
        
    },
    clickStopRealPlay(){
        
    },
},
mounted(){

// this.search(obj,function(obj){
// for(var key in obj){
// alert(obj[key].ipAddr);
// }
// })

}

}
</script>

<style>

.container{
    width:100%;
    height:680px;
}
.listchoice{
    width:20%;
    float:left;
    border-right:solid #eee 1px;
    height:680px;
    padding-top:10px;
    box-sizing:border-box;
}
.listchoice label{
    width:40%;
    display:left;
    display:block;
    text-align:center;
    margin:0 auto;
    height:30px;
    box-sizing:border-box;
    float:left;
    line-height:30px;
    font-size:16px;
}
.selected{
    width:50%;
    margin:0 auto;
    text-align:center;
    display:block;
    height:30px;
    box-sizing:border-box;
}
.video_info{
    width:77%;
    border:solid #eee 1px;
    float:right;
    height:680px;
    margin-right:2%;
}
.listchoice input{
    width:40%;
    display:block;
    float:left;
    margin:5%;
    box-sizing:border-box;
}

</style>

新建了一个vue项目来引用后界面显示Deleting local variable in strict mode错误,控制台报错:

clipboard.png

我开始怀疑是jquery和vue中的$冲突,在demo.js中var jq=jQuery.noConflict();后还是同样的错误,没有影响,同时,直接alert内容有效果,所以应该是WevVideoCtrl的对象无法引用

怎么能够正确引用webVideoCtrl并且使前端和demo一样正常显示,选择通道下拉框能读到webVideoCtr.js给的数据并且右侧有视频画面,如demo所示

clipboard.png

阅读 10.2k
3 个回答

是js引用错误,应该将三个需要引用的js放在static文件夹里,然后在index.html里进行引用

clipboard.png

clipboard.png

新手上路,请多包涵

js文件应该放在static里面,然后用index.HTML引用
虽然你问题已经解决,但是我还是要传一下解决方法,方便后来人


另外我考试过了,不用你养我了/手动滑稽

直接引用肯定不行的,因为老版的JS库都没有进行export ,所以你是取不到你需要的对象的,你可以自己封装下,导出就可以了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题