2013-12-08 38 views
1

我做了一个复杂的应用程序,捕获流星上的html2canvas.js截图。 除了以下条件,它运作良好。 1.部署到没有--debug选项的服务器。并且, 2.客户端是iOS Safari。流星中部署的代码和调试代码之间有什么区别?

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

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

如何有效调试此问题?

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

+0

流星在您的代码上运行缩小器以供生产使用。 Minifiers有时会重命名变量,如果外部库依赖某种动态反射 - 它们可能会中断。这个问题仍然是开放的,也许应该有办法指向某些图书馆,并告诉流星“不要缩小这些东西,它只是打破” – imslavko

+0

谢谢你的有趣的评论。在审查代码时我会关心它。 我仍然不知道我的问题与它不同。它只发生在iOS上,尽管看起来没有OS特定的代码。 – Yuji

+0

这是不是第一次minifiers不好打,肯定应该有一个解决这个 – imslavko

回答

2

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

如果该应用仅适用于--debug选项,则表示您在应用中出现某种javascript错误。

缩小应用程序时,所有文件都连接成一个文件。如果代码中有一处错误,其余代码将不会执行。在--debug模式下,错误仍然存​​在,但由于文件是分离的,所以其他文件不受错误影响。

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

通常在流星中,这是由于您在下载之前访问集合引起的。就像试图获得doc.datedoc仍然未定义,所以它会引发空引用异常。

+0

谢谢你的答案。 – Yuji

相关问题