Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
Google chrome 为什么我的调试器在错误的行停止?_Google Chrome_Debugging_Meteor_Webstorm - Fatal编程技术网

Google chrome 为什么我的调试器在错误的行停止?

Google chrome 为什么我的调试器在错误的行停止?,google-chrome,debugging,meteor,webstorm,Google Chrome,Debugging,Meteor,Webstorm,我正在使用 METEOR@1.4.4.2 WebStorm@2017.1.1 Chrome@58.0.3029.110 (64-bit) macOS Sierra 10.12.5 ecmascript@0.7.3 ecmascript-runtime@0.3.15 最近,调试器开始在错误的行停止,但只是在视觉上停止,主要是在实际断点后面8-14行 e、 g *橙色条表示google chrome中的断点 控制台输出: 另外,正如您所看到的,有些行变暗了,这意味着我无法从浏览器在那里设置断

我正在使用

METEOR@1.4.4.2
WebStorm@2017.1.1 
Chrome@58.0.3029.110 (64-bit)
macOS Sierra 10.12.5
ecmascript@0.7.3
ecmascript-runtime@0.3.15
最近,调试器开始在错误的行停止,但只是在视觉上停止,主要是在实际断点后面8-14行

e、 g

*橙色条表示google chrome中的断点

控制台输出:

另外,正如您所看到的,有些行变暗了,这意味着我无法从浏览器在那里设置断点


WebStorm内部调试器中的行为相同。所以我认为这不是Chrome的错。看起来源映射被破坏了。我不知道原因是网络风暴还是流星。在这种情况下,很难调试…

很难说清楚。在粗略的谷歌搜索中,你似乎不是唯一一个看到这一点的人。正如@MasterAM所提到的,这可能是因为来自transfilation的源地图。我不认为你可以做很多,但你可以尝试清除浏览器和IDE缓存,这似乎已经有一些工作了


很难说清楚,但您遇到的问题似乎与导致Meteor生成错误源地图的错误有关

源地图 这不是你的浏览器的“错误”。它只显示代码和项目中源映射传递给它的位置

app.js
文件和源映射(
app.js.map
)由Meteor构建过程生成,并从
.Meteor/local/build/programs/web.browser/app
目录提供服务

.map
文件负责告诉浏览器如何显示原始源代码,以及生成的
app.js
文件中的哪些段映射到原始源代码中的哪些段

关于源地图的技术方面,可以找到一个很好的解释

您可以在线可视化源地图,并查看使用的地图(选择“自定义…”并拖放
.js
.map
文件)

可疑的虫子 作为构建过程的一部分,Meteor使用Meteor包。在某些时候,一个bug导致在babel转换后生成无效的映射

这个错误目前正在被发现,流星队的队员们似乎正在接近这个原因

你能做什么? 目前,还没有快速、简单的解决办法

您可以:

  • 观察bug线程,等待它被解决并在没有源代码映射的情况下进行调试(如果bug很快被修复,可能是最好的)
  • 破解相关Meteor软件包的本地克隆(可能会有用,我还没有深入研究依赖性问题,也不推荐它,但是)
  • 在已知良好状态下从git签出运行Meteor,直到发布修复程序
最后一个选项是如何开始通过
git对分
确定bug

有关从签出运行meteor工具的方法的详细信息,请参阅,但要点如下:

首先,确保您的代码,包括
.meteor/versions
.meteor/packages
已签出到源代码管理中,因为您可能需要暂时将它们弄乱,并希望在修复错误后恢复它们

  • git克隆——递归https://github.com/meteor/meteor.git
    到您选择的目录(例如,
    /home/yourname/src/remote
  • cd流星
  • git checkout 25a89b5
    以获取最后一次已知的正确提交
  • git子模块更新--init--recursive
    以确保签出后一切都是金色的
  • /meteor--help
    启动签出版本
  • 在您的项目中,从
    .meteor/packages
    文件中删除版本信息,因为它们可能与签出时提供的版本不兼容
  • 在项目目录中,运行
    /home/yourname/src/remote/meteor/meteor run
  • 这将运行已签出的Meteor版本。您可能需要执行
    Meteor重置
    (警告:这将清除本地mongo数据库)或至少清除部分
    。Meteor/local
    ,(例如,源地图)才能正常工作,但这可能是不必要的


    对于一个我认为不久就会解决的bug来说,这是相当大的工作量,但我决定将此信息部分地包括在内,以便用作将来与sourcemap相关问题的文档。

    不确定此场景,但在使用eclipse调试java时遇到了类似的情况。当源代码nd正在调试的编译/解释代码-不同

    试着调试一个简单的js代码,以验证chrome的js调试器本身是否有问题。如果它能工作,那么对未“启用调试”的代码行的解释是它们都在同一行上(直到记录“7”的语句)。这也可能抵消了浏览器中的行号


    这是一种可能的解释。

    我要补充的是,在调试模式下,缩小的js文件的漂亮打印会在代码中的实线和移位行之间添加偏移量(do to Pretty print)


    因此,避免在调试模式下进行漂亮的打印,您将坚持正确的路线。

    已经晚了三年,但如果有人遇到这个问题。 问题在于IDE和生成.map文件的编译器对行分隔符的不同解释。 例如,在WebStorm和Angular项目中的窗口上,如果行分隔符是Unix样式(仅LF),TypeScript编译器将忽略它们。 在这种情况下,如果代码格式化程序将太长的行转换为两个较短的行,并将这些行仅拆分为LF,则在.map文件中,这一原本单行将被解释为