1

我有一个包含咖啡脚本和早午餐的项目。

文件连接有以下配置:

files:
  javascripts:
    joinTo:
      'js/app.js': /^app(\/|\\)(?!templates)/
      'js/vendor.js': /^vendor/

  templates:
    joinTo:
      'js/templates.js': /^app\/templates/

当我克隆这个项目并构建它时,一切正常 - 我在开发者控制台中看到了我的所有源文件。然后我在项目中的任何文件中做一些无害的修改(比如添加一个无用的变量声明或复制“return”语句),奇怪的事情发生了:

在此处输入图像描述

构建的代码有效且工作正常,但没有可用的源映射。

如果我完全禁用源映射,我仍然可以看到一些错误行为:

在此处输入图像描述

同时,原始构建文件绝对有效(不能发布第三个链接,抱歉):它最后有 '//# sourceMappingURL=app.js.map' 行,没有任何尾随空格或其他任何内容。

任何想法这可能是什么以及如何解决这个问题?

4

1 回答 1

0

我发现我错了。

第一的。关于浏览器加载的损坏文件。

正如我在上面的评论中注意到的那样,问题出在环境中。我的文件由 nginx 提供服务,在 Vagrant VM 中运行 - 似乎本地文件和 VM 之间的同步被破坏了。

我的解决方案如下:

  • 在 VirtualBox 中禁用缓存(机器设置 -> 选项卡“存储”-> 选择控制器 -> 取消选中“使用主机 I/O 缓存”);

  • 编辑 nginx 配置并在“http”部分设置“sendfile off”选项。

不确定这是绝对正确的解决方案,但是在浏览器加载了正确的文件之后。

第二。关于 Chrome 中 app.js 的地图仍然不存在。

这只是我的疏忽。我正在使用 Webstorm,它会定期建议为我打开的咖啡脚本文件启用观察程序。如果你同意(我不小心错过了“同意”按钮而不是“解雇”),它会自行编译该文件,在原始 .coffee 旁边创建 .map 和 .js 文件——当然,不管你的早午餐或其他任何设置。这些附加文件显示为 .coffee 文件的子文件夹,因此您很可能没有注意到它们。正是这些文件 Chrome 不喜欢。除非您将它们全部删除,否则 Chrome 将不会显示任何源地图,无论是 brunch 创建的 .map 文件 - 而对于 FF,这不是问题。

于 2014-03-25T12:42:01.970 回答