加载ASP.NET网页时,Underscore.js缺少Javascript“.map”文件

96

我有一个网页,它是运行在Azure上的ASP.NET网站的一部分。它已经良好地运行了一段时间。然而,突然间,浏览器试图下载Underscore.js的“.map”文件,我进行了一些阅读,显然JQuery创建“.map”文件作为Javascript源文件(“.js”)的调试辅助工具。但是,如果我查看我的网站Scripts目录,我发现这只发生在某些JQuery源文件上,并不是全部,我不确定什么规律。

然而,为什么浏览器会尝试加载与JQuery无关的Underscore.js的“map”文件呢?此外,为什么突然会出现这种情况?我很久以前就将Underscore.js添加到网页中,以前从未遇到过这个问题。

当我查看Chrome调试器控制台选项卡时,我得到的确切错误是:

GET http://myazureapp.cloudapp.net/Scripts/underscore-min.map 404 (未找到) Scripts/underscore-min.map:1

1个回答

228
你正在经历的是源映射。当使用压缩的JS文件时,它允许您在浏览器开发工具中使用可读代码进行调试。
Underscore的压缩版本在文件末尾有这一行:
//# sourceMappingURL=underscore-min.map

当你遇到这一行时,你的浏览器开发工具会尝试下载underscore-min.map

如果你想摆脱错误,请执行以下操作之一:

  1. underscore-min.js中删除该行。
  2. underscore-min.mapunderscore.js添加到您的项目中。

1
由于我不想触碰源代码(会在下次升级中丢失),是否有任何Grunt配置来强制使用不同的名称而不是“underscore-min.map”?或者是否有其他更简单的方法,而不是手动更改代码? - lubosdz
@lubosdz 你尝试过回答中的第二点吗?在我的情况下,我只是创建了一个额外的空文件,与原始文件同名,但扩展名为.map而不是.js(例如foo.min.js => 添加空的foo.min.map)。这可以让浏览器保持良好状态,不会影响源代码或更新。 - pasx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接