webcam.js 文件中的 .catch 有什么错误

What is the error in .catch inside webcam.js file

在我使用网络摄像头的应用程序中。为了访问它,我使用了 webcam.js (https://pixlcore.com/)。但是当我在 eclipse 中打开它时,它显示错误为:Syntax error on token "catch", Identifier expected。小代码片段:

            var self = this;
            this.mediaDevices.getUserMedia({
                "audio": false,
                "video": this.params.constraints || {
                    mandatory: {
                        minWidth: this.params.dest_width,
                        minHeight: this.params.dest_height
                    }
                }
            })
            .then( function(stream) {
                // got access, attach stream to video
                video.src = window.URL.createObjectURL( stream ) || stream;
                self.stream = stream;
                self.loaded = true;
                self.live = true;
                self.dispatch('load');
                self.dispatch('live');
                self.flip();
            })
            .catch( function(err) {  //here shows error
                return self.dispatch('error', "Could not access webcam: " + err.name + ": " + err.message, err);
            });

是什么原因,如何解决?

问题显然是 catchreserved keyword,因此您的代码检查器认为这是一个错误。但是,您的代码检查器实际上是错误的, catch 也是一个有效的方法调用。也就是说,除非你是老版本的IE。

在旧版本的 IE 中,此代码将失败,因为它也有此问题,它假定 try/catch 之外的 catch 无效。我相信这个问题在 IE9 或 IE10 中已经修复,不确定。

无论如何,您可以通过在带括号 属性 的字符串中使用 catch 来解决旧 IE 和其他具有此一般问题的问题:

// ...
.then( function(stream) {
    // ...
})
['catch']( function(err) { 
    // ...
});