2014-03-03 54 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優化開始按預期工作