2015-02-06 27 views
0

我在Play应用程序中遇到了sbt-uglify插件的问题。我完全按照https://github.com/sbt/sbt-uglify的文档。Sbt-Uglify发生内存不足错误(Play 2.3.7)

在我plugins.sbt我添加插件:

addSbtPlugin("com.typesafe.sbt" % "sbt-uglify" % "1.0.3") 

在我build.sbt我添加丑化到资产管道:

pipelineStages := Seq(uglify, digest, gzip) 

我至少有60 JavaScript文件正在与丑化优化当我运行:sbt startsbt dist。我开始看到几个警告:

[error] WARN: Dropping unused function argument 
[error] WARN: Dropping unused function argument 
[error] WARN: Dropping unreachable code 

我习惯在使用较少的JS文件运行类似的项目时看到这一点。这样继续下去,直到获得无记忆的点:

[error] java.lang.OutOfMemoryError: unable to create new native thread 

我发现被问过类似的问题,这一点:Play 2.3.6 Java - OutOfMemory errors w/ sbt-uglify。这似乎没有回答,我已经试图增加我的记忆限制。

有趣的是,我可以使它与RequireJS一起正常工作,它应该完成同样的事情。我应该可以使用,对吗?

有没有其他人遇到这个问题或知道解决方案?我不完全确定这是Play,Uglify还是什么问题。

我们添加了复制这个问题,你可以克隆,并尝试为自己测试例如:https://github.com/ascreamingweas/Sbt-Uglify-Test

您的帮助表示赞赏。

+0

我想出了一个测试版本,它在试图优化60多个CoffeeScript文件时复制了这个确切的错误。你可以在这里查看:https://github.com/ascreamingweas/Sbt-Uglify-Test。谢谢! – ASCREAMINGWEAS 2015-02-06 19:33:10

+0

作为解决方法,您可以尝试按照[此处](https://github.com/sbt/sbt-js-engine)中的说明安装节点JS并使用节点SBT JS引擎。根据我的经验,它比基于Java的默认(Trireme)快得多,效率更高,尽管不太方便。 – Mikesname 2015-02-07 19:34:15

回答

0

我有同样的问题,SBT-JS引擎似乎已经解决了这个问题:

只要确保你添加插件

ddSbtPlugin("com.typesafe.sbt" % "sbt-js-engine" % "1.0.2")

而且不要忘了安装任何的NodeJS添加

JsEngineKeys.engineType := JsEngineKeys.EngineType.Node

export SBT_OPTS="$SBT_OPTS -Dsbt.jse.engineType=Node"

+0

谢谢你的回应。我们现在转向其他选项,但我一定会尝试一下。 – ASCREAMINGWEAS 2015-06-26 16:27:57