Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从缩小的JavaScript文件中获取错误行号_Javascript - Fatal编程技术网

从缩小的JavaScript文件中获取错误行号

从缩小的JavaScript文件中获取错误行号,javascript,Javascript,当JavaScript文件缩小时,是否有可能动态获取错误的行号 目前,所有错误都被记录为发生在第0行。否。这就是为什么在开发/调试期间不应使用缩小代码。否。这就是为什么在开发/调试期间不应使用缩小代码。您可以美化缩小代码。在chrome inspector中,它是{}按钮,称为“漂亮打印” 然而,美化此代码并不意味着它将尊重您的原始代码 因此,我要说的是:在开发/调试过程中不要使用缩小的代码。您可以美化缩小的代码。在chrome inspector中,它是{}按钮,称为“漂亮打印” 然而,美化此

当JavaScript文件缩小时,是否有可能动态获取错误的行号


目前,所有错误都被记录为发生在第0行。

否。这就是为什么在开发/调试期间不应使用缩小代码。

否。这就是为什么在开发/调试期间不应使用缩小代码。

您可以美化缩小代码。在chrome inspector中,它是{}按钮,称为“漂亮打印”

然而,美化此代码并不意味着它将尊重您的原始代码


因此,我要说的是:在开发/调试过程中不要使用缩小的代码。

您可以美化缩小的代码。在chrome inspector中,它是{}按钮,称为“漂亮打印”

然而,美化此代码并不意味着它将尊重您的原始代码


因此,我要说的是:不要在开发/调试期间使用缩小的代码。

您想要调试缩小的脚本的一个原因是,如果您使用闭包编译器对其进行优化,并且优化过程导致了一个bug。 对于提供Chrome列的浏览器,即在堆栈跟踪中,您可以执行以下操作:

/*@const*/ //for closure-compiler
DEBUG=2 // 0=off, 1=msg:file:line:column, 2=msg:stack-trace
if(DEBUG){

/*@const @constructor*/
Object.defineProperty(window,'__stack__',{get:function(){
    try{_ფ_()}catch(e){return e.stack.split(":")}
}})

/*@const @constructor*/
Object.defineProperty(window,'__file__',{get:function(){
    var s=__stack__,l=s.length
    return (isNaN(s[l-2]))?s[l-2]:s[l-3]
}})

/*@const @constructor*/
Object.defineProperty(window,'__line__',{get:function(){
    var s=__stack__,l=s.length
    return (isNaN(s[l-2]))?s[l-1]:s[l-2]
}})

/*@const @constructor*/
Object.defineProperty(window,'__col__',{get:function(){
    var s=__stack__,l=s.length
    return (isNaN(s[l-2]))?"NA":s[l-1]
}})

/*@const @constructor*/
Object.defineProperty(window,'LOG',{
    get:function(){return out},
    set:function(msg){if(DEBUG>1)out=msg+"\t-\t"+__stack__
        else out=msg+" in file:"+__file__+" @ Line:"+__line__+", Column:"+__col__
        console.log(out)}
})
}//end if(DEBUG)
用法:LOG=my message将我的消息连同行号和文件一起写入控制台或获取最后一个日志alertLOG

通过v8 chrome,node.js,您可以更深入地了解杂草

/*@const @constructor*/ Object.defineProperty(this,'__stack',{get:function(){var o=Error['prepareStackTrace'],e=new Error,s;Error['prepareStackTrace']=function(_,s){return s},Error['captureStackTrace'](e,arguments['callee']),s=e['stack'],Error['prepareStackTrace']=o;return s}})

/*@const @constructor*/ Object.defineProperty(this,'__col__',{get:function(){return __stack[1]['getColumnNumber']()}})
/*@const @constructor*/ Object.defineProperty(this,'__eval_orig__',{get:function(){return __stack[1]['getEvalOrigin']()}})
/*@const @constructor*/ Object.defineProperty(this,'__file__',{get:function(){return __stack[1]['getFileName']()}})
/*@const @constructor*/ Object.defineProperty(this,'__func__',{get:function(){return __stack[1]['getFunctionName']()}})
/*@const @constructor*/ Object.defineProperty(this,'__function__',{get:function(){return __stack[1]['getFunction']()}})
/*@const @constructor*/ Object.defineProperty(this,'__is_constructor__',{get:function(){return __stack[1]['isConstructor']()}})
/*@const @constructor*/ Object.defineProperty(this,'__is_eval__',{get:function(){return __stack[1]['isEval']()}})
/*@const @constructor*/ Object.defineProperty(this,'__is_native__',{get:function(){return __stack[1]['isNative']()}})
/*@const @constructor*/ Object.defineProperty(this,'__is_top_level__',{get:function(){return __stack[1]['isTopLevel']()}})
/*@const @constructor*/ Object.defineProperty(this,'__line__',{get:function(){return __stack[1]['getLineNumber']()}})
/*@const @constructor*/ Object.defineProperty(this,'__method__',{get:function(){return __stack[1]['getMethodName']()}})
/*@const @constructor*/ Object.defineProperty(this,'__this__',{get:function(){return __stack[1]['getThis']()}})
/*@const @constructor*/ Object.defineProperty(this,'__type__',{get:function(){return __stack[1]['getTypeName']()}})

您希望调试缩小脚本的一个原因是,如果您使用闭包编译器对其进行优化,而优化过程导致了一个bug。 对于提供Chrome列的浏览器,即在堆栈跟踪中,您可以执行以下操作:

/*@const*/ //for closure-compiler
DEBUG=2 // 0=off, 1=msg:file:line:column, 2=msg:stack-trace
if(DEBUG){

/*@const @constructor*/
Object.defineProperty(window,'__stack__',{get:function(){
    try{_ფ_()}catch(e){return e.stack.split(":")}
}})

/*@const @constructor*/
Object.defineProperty(window,'__file__',{get:function(){
    var s=__stack__,l=s.length
    return (isNaN(s[l-2]))?s[l-2]:s[l-3]
}})

/*@const @constructor*/
Object.defineProperty(window,'__line__',{get:function(){
    var s=__stack__,l=s.length
    return (isNaN(s[l-2]))?s[l-1]:s[l-2]
}})

/*@const @constructor*/
Object.defineProperty(window,'__col__',{get:function(){
    var s=__stack__,l=s.length
    return (isNaN(s[l-2]))?"NA":s[l-1]
}})

/*@const @constructor*/
Object.defineProperty(window,'LOG',{
    get:function(){return out},
    set:function(msg){if(DEBUG>1)out=msg+"\t-\t"+__stack__
        else out=msg+" in file:"+__file__+" @ Line:"+__line__+", Column:"+__col__
        console.log(out)}
})
}//end if(DEBUG)
用法:LOG=my message将我的消息连同行号和文件一起写入控制台或获取最后一个日志alertLOG

通过v8 chrome,node.js,您可以更深入地了解杂草

/*@const @constructor*/ Object.defineProperty(this,'__stack',{get:function(){var o=Error['prepareStackTrace'],e=new Error,s;Error['prepareStackTrace']=function(_,s){return s},Error['captureStackTrace'](e,arguments['callee']),s=e['stack'],Error['prepareStackTrace']=o;return s}})

/*@const @constructor*/ Object.defineProperty(this,'__col__',{get:function(){return __stack[1]['getColumnNumber']()}})
/*@const @constructor*/ Object.defineProperty(this,'__eval_orig__',{get:function(){return __stack[1]['getEvalOrigin']()}})
/*@const @constructor*/ Object.defineProperty(this,'__file__',{get:function(){return __stack[1]['getFileName']()}})
/*@const @constructor*/ Object.defineProperty(this,'__func__',{get:function(){return __stack[1]['getFunctionName']()}})
/*@const @constructor*/ Object.defineProperty(this,'__function__',{get:function(){return __stack[1]['getFunction']()}})
/*@const @constructor*/ Object.defineProperty(this,'__is_constructor__',{get:function(){return __stack[1]['isConstructor']()}})
/*@const @constructor*/ Object.defineProperty(this,'__is_eval__',{get:function(){return __stack[1]['isEval']()}})
/*@const @constructor*/ Object.defineProperty(this,'__is_native__',{get:function(){return __stack[1]['isNative']()}})
/*@const @constructor*/ Object.defineProperty(this,'__is_top_level__',{get:function(){return __stack[1]['isTopLevel']()}})
/*@const @constructor*/ Object.defineProperty(this,'__line__',{get:function(){return __stack[1]['getLineNumber']()}})
/*@const @constructor*/ Object.defineProperty(this,'__method__',{get:function(){return __stack[1]['getMethodName']()}})
/*@const @constructor*/ Object.defineProperty(this,'__this__',{get:function(){return __stack[1]['getThis']()}})
/*@const @constructor*/ Object.defineProperty(this,'__type__',{get:function(){return __stack[1]['getTypeName']()}})

呵呵,如果firebug&co能够选择自动美化缩小的代码,并将错误位置等映射到美化代码中的正确行,那就太好了。我不认为这是在开发过程中。我的问题和提问者完全一样。我的代码在缩小之前工作得很好。呵呵,如果firebug&co能够选择自动美化缩小的代码,并将错误位置等映射到美化代码中的正确行,那就太好了。我不会假设这是在开发过程中。我的问题和提问者完全一样。我的代码工作得很好,直到它被缩小。