Math.log10 е недефиниран/наличен във PhantomJS

TypeError: undefined is not a function (evaluating 'Math.log10(10)')

Как да реша този проблем, ако не мога да променя изходния код на проекта?

Мога да променя кода на скрипта PhantomJS.

На този въпрос може да се отговори частично от този въпрос. Разликата е как е правилният начин за инжектиране на решението във вашия код.


person rodvlopes    schedule 22.04.2015    source източник
comment
възможен дубликат на Защо Math .log10 работи на някои системи, но връща недефиниран на други?   -  person CodingIntrigue    schedule 22.04.2015
comment
По-конкретно вижте коментара за полифила   -  person CodingIntrigue    schedule 22.04.2015
comment
polyfill решението е добро, но не е пълно. Приетият отговор дава важна част от информацията, която е определяща за успеха: Това става чрез регистриране на страницата.onInitialized манипулатор на събития:   -  person rodvlopes    schedule 22.04.2015


Отговори (1)


Ако страницата се нуждае от тази функция, можете лесно да я добавите. Използвайте например polyfill, предоставен от MDN.

Полифилът трябва да се постави възможно най-рано. Това става чрез регистрация в page.onInitialized манипулатор на събития:

page.onInitialized = function(){
    page.evaluate(function(){
        Math.log10 = Math.log10 || function(x) {
            return Math.log(x) / Math.LN10;
        };
    });
};

Това работи във всички версии на PhantomJS.

person Artjom B.    schedule 22.04.2015