Javascript Chromium console.error内部实现-是什么使超链接路径指向错误堆栈中的文件?

Javascript Chromium console.error内部实现-是什么使超链接路径指向错误堆栈中的文件?,javascript,hyperlink,console,chromium,Javascript,Hyperlink,Console,Chromium,我注意到在使用控制台时错误堆栈是可见的。error能够使URI超链接。这种格式在浏览器开发工具和我使用的IDE(带有集成Git Bash终端的WebStorm)中也会发生 示例屏幕(来自Jest测试框架,但在通常的控制台中也提供了此类超链接。错误调用): 由于Node.js在引擎盖下使用Chrome的V8 js引擎,我曾尝试调试控制台。错误内部实现,但我遇到了麻烦-它使用流输出错误消息,之前只是一个字符串,没有任何特殊格式(新行除外),之后在控制台中成为格式化输出(包括超链接)。我不知道下面会

我注意到在使用
控制台时错误堆栈是可见的。error
能够使URI超链接。这种格式在浏览器开发工具和我使用的IDE(带有集成Git Bash终端的WebStorm)中也会发生

示例屏幕(来自Jest测试框架,但在通常的
控制台中也提供了此类超链接。错误
调用):

由于Node.js在引擎盖下使用Chrome的V8 js引擎,我曾尝试调试控制台。错误
内部实现,但我遇到了麻烦-它使用流输出错误消息,之前只是一个字符串,没有任何特殊格式(新行除外),之后在控制台中成为格式化输出(包括超链接)。我不知道下面会发生什么

通过为
Console.prototype.error
方法分配
Console.prototype.warn
方法,这很容易混淆。此外,在调试Node.js时,不会导航到
Console
方法的实现,即使事实上节点的代码比浏览器的代码更容易访问-我的意思是可以进行调试节点的内部结构达到某种程度,这在浏览器中是不存在的

我的问题:是否可以以可控的方式将超链接内容(我的目的是超链接到模块的路径)输出到控制台输出

出现了这个问题,因为我正在为project中使用的
console
方法编写Node.js包装,正如我注意到调用堆栈中指向文件的超链接一样,我想在包装器中使用该功能。我知道有一些库包装
console
,并提供大量功能,但我希望有一个小包装器,带有只包含一个或两个功能。如果有人知道提供控制台输出可控超链接的库,我希望能共享一个链接,以便查找它的实现。

IDE 正如其他人在评论中已经提到的:链接是IDE/文本编辑器的一项功能。您可以提供文件路径,但它可能不可单击,具体取决于您的IDE/文本编辑器。例如,
console.error(`${u filepath}:${line}:${column}')

浏览器(基于铬) 是的,这在某种程度上是可能的。只需在文件路径前面加上
file://

//index.js
常数线=2;
常数列=9;
console.error('error:','file://${\uu filename}:${line}:${column}`。replace(/\\\/g,'/');
console.log('done');//在devtools内部的此处设置断点
  • 运行
    节点--检查brk index.js
  • 打开
  • 选择为节点打开专用DevTools(这将使源在DevTools>源>节点中可见)或在节点进程下检查
  • 允许代码运行到断点。检查控制台并单击链接
  • 笔记
    • replace(/\\/g)
      将确保路径有效(至少在Windows上)
    • 这是浏览器中很少使用
      文件://
      链接的地方之一
    • 您还可以生成sourcemaps并链接到
      sourceMappingURL


    “我正在编写控制台方法上的Node.js包装”-您希望最终在哪个控制台上显示超链接?浏览器devtools和IDE终端都非常特殊。我主要希望它显示在IDE中,但有时在节点调试期间,在Chrome devtools中也可以使用此类超链接会很方便。Afaict,这是IDE的一个功能-它看起来很简单通过任何输出找到类似于文件路径的内容并将其链接。我试图将文件路径传递到
    控制台.log
    ,但它没有将其作为超链接输出,因此我认为
    控制台的引擎盖下有某种东西。错误
    实现使用超链接将文件路径包装到调用堆栈中。