Math.log10 在 PhantomJS 中是 undefined/available

Math.log10 is undefined/available in PhantomJS

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

无法更改项目源码怎么解决?

我可以更改 PhantomJS 脚本的代码。

这个问题可以由 部分回答。不同之处在于将解决方案注入代码的正确方法。

如果页面需要此功能,您可以轻松添加。例如使用 polyfill as provided by MDN.

必须尽早应用 polyfill。这是通过注册到 page.onInitialized 事件处理程序来完成的:

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

这适用于所有 PhantomJS 版本。