在使用命令"激活阶段"构建我的Play 2.3应用程序(sbt 0.13.5)时我收到了错误:
Optimizing JavaScript with RequireJS
Error: Error: paths fallback not supported in optimizer. Please provide a build config path override for angular-easyfb
build.sbt:
...
"org.webjars.bower" % "angular-easyfb" % "1.3.1"
main.js:
shim: {
'angular': {
deps: ['jquery'],
exports: 'angular'
},
...
'angular-easyfb': ['angular']
},
paths: {
...
'angular': ['../lib/angularjs/angular'],
'angular-easyfb': ['../lib/angular-easyfb/angular-easyfb'],
...
}});
在开发模式下,一切正常。我的其他基于webjar的js-libs运行良好,即使在生产模式下(例如," org.webjars"%" angular-elastic"%" 2.4.2")
Google和SO为我提供了很多结果"优化器"不支持路径回退。 似乎有些人找到了解决办法,但其他人却没有。
我如何(作为Java和Javascript人)系统地分析问题是什么?
答案 0 :(得分:2)
看一下这篇文章:How to use RequireJS optimizer in Play framework?
事实证明,RequireJS优化支持并不适用于所有Webjars,而是仅限于Classic Webjars。
有一些解释。如果您查看http://mvnrepository.com/artifact/org.webjars.bower/angular-easyfb/1.3.1及其jar文件,您将无法在内部看到任何webjars-requirejs.js。所以这是你的情况,默认情况下webjar与requirejs不兼容。
这是另一回事:
请记住使用方括号,否则不会发生CDN替换。 对于非requirejs ready脚本,在声明路径时不应使用方括号。否则,rjs将拒绝构建,不支持错误路径回退。
因此,请尝试从路径中删除方括号:
'angular-easyfb': '../lib/angular-easyfb/angular-easyfb',