playframework - Play Framework 2 & requirejs - 在 dist 构建中不尊重路径

标签 playframework playframework-2.0 requirejs

我在 Play 2.0 中的 requirejs 实现遇到了一些问题,在开发模式下可以找到所有模块,但是在运行 dist 时似乎不尊重我设置的路径。

这是设置:

/assets/javascripts/templates/template1/main.js:

require.config({
   baseUrl: "/assets/javascripts",
   paths : {
           jquery : [ 'core/lib/jquery/jquery-1.8.3' ],
           can : [ 'core/lib/canjs/can' ]
   }
});

require([ "jquery", "can", "core/global/moduleloader" ], function($, can, ml) {
   //do stuff

});

在我调用的模板中:
@helper.requireJs(core = routes.Assets.at("javascripts/require.js").url, 
    module = routes.Assets.at("javascripts/templates/template1/main").url)       

在我的 build.scala 中,我告诉它要优化哪些文件,如下所示:
val main = play.Project(appName, appVersion, appDependencies).settings(
    requireJs += "templates/template1/main"
)

客户端所有依赖项都已解决,但是当使用 dist 进行优化时,我得到:
[info] RequireJS optimization has begun...
[info] app.build.js:
[info] ({appDir: "javascripts",
[info]           baseUrl: ".",
[info]           dir:"javascripts-min",
[info]           modules: [{name: "templates/template1/main"}]})
model contains 41 documentable templates

Tracing dependencies for: templates/template1/main
JavaException: java.io.FileNotFoundException:       /Users/paulsmith/Projects/Experiments/play/Moduluar/target/scala-2.10/classes/public/javascripts-min/jquery.js (No such file or directory)
In module tree:
    templates/template1/main

从我所见,路径配置被忽略,因此它解析路径不正确。这似乎是由于 app.build.js 覆盖了 main.js 中的配置。

有没有人遇到过这个问题?

谢谢,

保罗

最佳答案

我遇到了同样的问题,将 requireJsShim 键添加到我的 Build.scala 解决了这个问题:

val main = play.Project(appName, appVersion, appDependencies).settings( 
    requireJs += "main.js",
    requireJsShim += "main.js"
}

requireJsShim 告诉 play 使用 main.js 中的设置,例如路径和垫片,而不是 play app.build.js 中的默认值

我正在使用 Play 2.1.0;此功能直到 2012 年 12 月 12 日才添加,所以我不确定它包含在哪些 2.1 候选版本中

引用:
https://play.lighthouseapp.com/projects/82401-play-20/tickets/945-allow-specifying-your-own-requirejs-build-file#ticket-945-4
https://github.com/playframework/Play20/commit/ba71f3967c3001cc0db8a4a7b4f9a31c8eebbc45

关于playframework - Play Framework 2 & requirejs - 在 dist 构建中不尊重路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14021578/

相关文章:

scala - 将 SecureSocial 与后端用户服务/存储集成?

ubuntu - 从 Web 应用程序本地存储和提供用户上传的图像文件

playframework - 使用 Play Framework Java 设置内容类型 header

javascript - 使用 require.js 加载 Angular ui-bootstrap 失败,除非我重命名 ui.bootstrap?

xml - PlayFramework:获取原始请求 xml 正文作为字符串

logging - 玩!框架日志记录功能

java - 如何在play框架作业中下载图像?

java - Play Framework 2.0 中的路由重载函数

javascript - 将非 AMD 兼容的 javascript 模块与 require.js 一起使用?

javascript - karma 单元测试 : Module name "react" has not been loaded yet for context: _. 使用 require([])