2014-03-03 55 views
0

我是新来玩框架,我试图让它与RequireJs一起工作。当我在开发模式下运行我的应用程序时,一切运行正常,但是当我设置application.mode=prod并启动服务器时play start我遇到了问题。Playframework/RequireJs JavaScript文件未被优化

尝试加载/assets/javascripts-min/home/main.js时,浏览器收到HTTP404。

这里是我的Build.scala文件

import sbt._ 
import Keys._ 
import play.Project._ 
import com.google.javascript.jscomp._ 
import java.io.File 

object MyBuild extends Build { 

    val appDependencies = Seq (
    jdbc, 
    anorm, 
    cache 
) 

    val appVersion = "0.0.1" 

    val appName = "TodoList" 

    // set clojure compiler options so it won't choke on modern js frameworks 
    val root = new java.io.File(".") 
    val defaultOptions = new CompilerOptions() 
    defaultOptions.closurePass = true 
    defaultOptions.setProcessCommonJSModules(true) 
    defaultOptions.setCommonJSModulePathPrefix(root.getCanonicalPath + "/app/assets/javascripts/") 
    defaultOptions.setLanguageIn(CompilerOptions.LanguageMode.ECMASCRIPT5) 

    CompilationLevel.WHITESPACE_ONLY.setOptionsForCompilationLevel(defaultOptions) 

    val main = play.Project(appName, appVersion, appDependencies).settings(
     (Seq(requireJs += "home/main.js", requireJsShim := "home/main.js") ++ closureCompilerSettings(defaultOptions)): _* 
    ) 
} 
+0

您是否看到日志中的“RequireJS优化已开始......”?您还应该检查服务器启动过程中是否有任何异常。在优化过程中,我已经遇到了FileNotFoundException,并且未生成优化文件(但无论如何都启动了播放服务器) – mguillermin

+0

不,我没有看到,我也在服务器启动过程中看到任何异常。他们将在文件日志\ application.log中,对吗? – Jason

+0

是的,默认情况下,日志会附加到'logs/application.log'。如果您没有看到“RequireJS优化已经开始......”,那么您的构建配置可能不正确。通过在模板中设置requireJs + =“main.js”'和requireJsShim + =“main.js”'和'@ helper.requireJs',我可以在日志中看到消息并且一切正常。 (请参阅:https://gist.github.com/mguillermin/9324154) – mguillermin

回答

0

事实证明,我有一个矛盾的build.sbt(在root目录)和Build.scala(在project目录)的文件。一旦我删除了sbt文件,requireJs优化开始按预期工作