Javascript 使用config-all.json生成modernizr.js时出错

Javascript 使用config-all.json生成modernizr.js时出错,javascript,npm,modernizr,Javascript,Npm,Modernizr,我有一个我无法解决的问题: 我安装了最新版本的modernizr(3.7.1),其中包含npm安装和一个package.json 正如文档所建议的那样,我使用以下命令/bin/modernizr-c config all.json生成了modernizr.js文件 现在我的Modernizer文件包含在我的页面中,我在JavaScript控制台中遇到以下错误: 我不知道这是否阻碍了现代化的良好发展,但我还是不明白为什么会发生 有关更多详细信息,modernizr.js中的函数如下所示: Mo

我有一个我无法解决的问题:

  • 我安装了最新版本的modernizr(3.7.1),其中包含npm安装和一个package.json

  • 正如文档所建议的那样,我使用以下命令
    /bin/modernizr-c config all.json
    生成了modernizr.js文件

  • 现在我的Modernizer文件包含在我的页面中,我在JavaScript控制台中遇到以下错误:

我不知道这是否阻碍了现代化的良好发展,但我还是不明白为什么会发生

有关更多详细信息,modernizr.js中的函数如下所示:

Modernizr.addTest('localizednumber', function() {
    /* this extends our testing of input[type=number], so bomb out if that's missing */
    if (!Modernizr.inputtypes.number) { return false; }
    /* we rely on checkValidity later, so bomb out early if we don't have it */
    if (!Modernizr.formvalidation) { return false; }

    var body = getBody();
    var div = createElement('div');
    var firstChild = body.firstElementChild || body.firstChild;
    var result;

    body.insertBefore(div, firstChild);

    div.innerHTML = '<input type="number" value="1.0" step="0.1"/>';
    var input = div.childNodes[0];
    body.appendChild(div);

    input.focus();
    try {
      document.execCommand('SelectAll', false); // Overwrite current input value, rather than appending text
      document.execCommand('InsertText', false, '1,1');
    } catch (e) {} // prevent warnings in IE

    /* results */
    result = input.type === 'number' && input.valueAsNumber === 1.1 && input.checkValidity();

    /* cleanup */
    body.removeChild(div);
    if (body.fake) {
      body.parentNode.removeChild(body); // <==== ERROR HAPPENS HERE
    }

    return result;
  });
modernizer.addTest('localizednumber',function(){
/*这扩展了我们对输入[type=number]的测试,所以如果缺少输入,就炸掉它*/
如果(!modernizer.inputtypes.number){返回false;}
/*我们以后依赖于检查有效性,所以如果我们没有它,就早点炸掉它*/
如果(!modernizer.formvalidation){返回false;}
var body=getBody();
var div=createElement('div');
var firstChild=body.firstElementChild | | body.firstChild;
var结果;
身体。插入前(分区,第一个孩子);
div.innerHTML='';
var input=div.childNodes[0];
附体儿童(div);
input.focus();
试一试{
document.execCommand('SelectAll',false);//覆盖当前输入值,而不是追加文本
document.execCommand('InsertText',false,'1,1');
}catch(e){}//防止IE中出现警告
/*结果*/
结果=input.type=='number'&&input.valueAsNumber===1.1&&input.checkValidity();
/*清理*/
身躯,离体儿童(分区);;
if(body.false){

body.parentNode.removeChild(body);//我在我的页面中的body elemtn末尾包含了modernizr.js(在任何其他脚本之前),错误不再发生,因为modernizr不会使用假body来运行他的测试

但我认为在那里包含Modernizer是一种不好的做法,这就是为什么我首先在头标签的末尾包含了这个文件,有什么解释吗

Modernizr.addTest('localizednumber', function() {
    /* this extends our testing of input[type=number], so bomb out if that's missing */
    if (!Modernizr.inputtypes.number) { return false; }
    /* we rely on checkValidity later, so bomb out early if we don't have it */
    if (!Modernizr.formvalidation) { return false; }

    var body = getBody();
    var div = createElement('div');
    var firstChild = body.firstElementChild || body.firstChild;
    var result;

    body.insertBefore(div, firstChild);

    div.innerHTML = '<input type="number" value="1.0" step="0.1"/>';
    var input = div.childNodes[0];
    body.appendChild(div);

    input.focus();
    try {
      document.execCommand('SelectAll', false); // Overwrite current input value, rather than appending text
      document.execCommand('InsertText', false, '1,1');
    } catch (e) {} // prevent warnings in IE

    /* results */
    result = input.type === 'number' && input.valueAsNumber === 1.1 && input.checkValidity();

    /* cleanup */
    body.removeChild(div);
    if (body.fake) {
      body.parentNode.removeChild(body); // <==== ERROR HAPPENS HERE
    }

    return result;
  });