流星中部署的代码和调试代码有什么区别?

时间:2013-12-08 07:34:00

标签: meteor

我制作了一个复杂的应用程序,捕获了Meteor上html2canvas.js拍摄的屏幕截图。 除了以下情况外,它运作良好。 1.没有--debug选项部署到服务器。和, 2.客户端是iOS Safari。

(如果您通过html2canvas.js创建一个简单的捕获应用程序,它适用于所有条件。所以我说“一个复杂的应用程序”,意味着该应用程序包含其他库。)

没有--debug选项和--debug选项之间的本质区别是什么? (它可以是连接或分开,或者是否已经过化,但它们是等同的。) 显然这种现象表明它们并不等同。 是否有可能通过加入iOS上的文件来干扰代码?

如何有效地调试此问题?

[UPDATE] 一旦我使用--debug选项部署并在没有--debug的情况下重新部署,问题就消失了。 它可能与iOS上的浏览器缓存策略有关。

1 个答案:

答案 0 :(得分:2)

在调试模式下,您的代码不会缩小并打包成单个文件。因此,有两种模式debugproduction。当您使用meteor deploy而不使用--debug时,您的代码会针对速度进行大量优化。您会注意到应用程序在手机上加载所需的时间。

如果该应用仅使用--debug选项,则表示您的应用中存在某种javascript错误。

当缩小应用程序时,所有文件都会连接成一个文件。如果代码中某处出现单个错误,则其余代码将无法执行。在--debug模式下,错误仍然存​​在,但由于文件是分开的,因此其他文件不会受到错误的影响。

您应该使用chrome / safari中的javascript控制台查找错误并在部署应用程序之前进行修复。如果你在Mac上,提出它的最简单方法是Cmd + Alt + J.

通常在meteor中,这是由您在下载之前访问该集合引起的。尝试获取doc.datedoc之类的内容仍未定义,因此会抛出空引用异常。