优化器中不支持路径回退("重新加载")

时间:2015-07-12 13:00:10

标签: javascript requirejs sbt playframework-2.3 webjars

在使用命令"激活阶段"构建我的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人)系统地分析问题是什么?

1 个答案:

答案 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',