解析错误。之后缺少姓名。运算符

时间:2019-05-14 06:29:17

标签: javascript

在使用 VAST播放器播放广告时,我有以下代码。 我正在检查用户是否已经单击以避免现代浏览器中出现的DOM异常。

(function(VASTPlayer) {
    'use strict';

    var player = new VASTPlayer(document.getElementById(playerID));

    player.once('AdStopped', function() {
        console.log('Ad finished playback! ' + playerID);
        interstitialInstance.close();
    });

    player.load( << Ad Tag >> ).then(function startAd() {
        console.log(player.adDuration + " " + playerID);

        var s = document.getElementById(playerID).childNodes[0];
        if (s) {
            if (!ryads.mouseClick) {
                s.muted = true;
            } else
                s.muted = false;
        } else {
            console.log("Error while fetching video element!!!");
        }

        return player.startAd();
    }).catch(function(reason) {
        console.log('Ad failed to play ' + playerID);
        interstitialInstance.close();
        setTimeout(function() {
            throw reason;
        }, 0);
    });
}(window.VASTPlayer));

在Jenkins中运行Compress作业时,出现以下错误。

  

project.js:891:错误-解析错误。之后缺少姓名。算子               })。catch(function(reason){                        ^

     

project.js:892:错误-解析错误。语法错误                   console.log('广告无法播放'+ playerID);                            ^

     

project.js:896:错误-解析错误。失踪 ;声明前       }(window.VASTPlayer));

2 个答案:

答案 0 :(得分:0)

替换此行

(function(VASTPlayer) {

作者

;(function(VASTPlayer) {

否则,当压缩作业试图连接文件时,您的IIFE可能会被认为是文件末尾所包含的代码的参数,而该文件的结尾恰好在此文件之前。

请详细说明一下

player.load( << Ad Tag >>

是吗?那是无效的Javascript。某种JSX方言?还是只是复制/粘贴错误?

答案 1 :(得分:0)

这是yuicompressor的一个众所周知的问题since years。 一个简单的解决方法是提取promise的resolve和拒绝函数,如下所示:

promise.then(successFunction, failureFunction);

function successFunction() {
   console.log('success');
}

function failureFunction(err) {
    console.error(err);
}