流星Spiderable,错误

时间:2015-01-05 10:36:04

标签: meteor

当我测试?_escaped_fragment_ =时,我得到了

TypeError: 'undefined' is not a function (evaluating 'document.querySelectorAll.bind(document)')

http://localhost:3000/packages/material-design.js?e252ae03c7066a6ce33a348a22662a73cee8811e:75
http://localhost:3000/packages/material-design.js?e252ae03c7066a6ce33a348a22662a73cee8811e:315
http://localhost:3000/packages/material-design.js?e252ae03c7066a6ce33a348a22662a73cee8811e:318
http://localhost:3000/packages/material-design.js?e252ae03c7066a6ce33a348a22662a73cee8811e:778

身体中的html确实显示但我没有得到任何元标记,并且在标题之前头部有一个巨大的空白区域。

我跟着http://www.meteorpedia.com/read/spiderable/并运行了phantomjs phantomtest.js

❯phantomjs phantomtest.js [17:50:01] 正在加载页面 页面加载状态:成功 尚未准备好,流星未定义

我得到了这个。

知道什么是错的吗?谢谢。

1 个答案:

答案 0 :(得分:2)

phantomjs使用的spiderable中,不支持bind方法。如果您是material-design的所有者,我建议您使用bind替换_.bind。否则,您可以将a polyfill添加到项目中,以确保Function.prototype.bind已正确定义。

修改

要确保您的浏览器支持bind,请将此代码放在代码库中的某处:

if (!Function.prototype.bind) {
  Function.prototype.bind = function(oThis) {
    if (typeof this !== 'function') {
      // closest thing possible to the ECMAScript 5
      // internal IsCallable function
      throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
    }

    var aArgs   = Array.prototype.slice.call(arguments, 1),
        fToBind = this,
        fNOP    = function() {},
        fBound  = function() {
          return fToBind.apply(this instanceof fNOP && oThis
                 ? this
                 : oThis,
                 aArgs.concat(Array.prototype.slice.call(arguments)));
        };

    fNOP.prototype = this.prototype;
    fBound.prototype = new fNOP();

    return fBound;
  };
}

上述实现是从here复制/粘贴的。