1

在使用命令“activator stage”构建我的 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

构建.sbt:

...
"org.webjars.bower" % "angular-easyfb" % "1.3.1"

主.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 人)系统地分析问题所在?

4

1 回答 1

2

看看这篇文章:如何在 Play 框架中使用 RequireJS 优化器?

事实证明,RequireJS 优化支持并不适用于所有 Webjar,而是仅限于 Classic Webjar。

有一些解释。如果您查看http://mvnrepository.com/artifact/org.webjars.bower/angular-easyfb/1.3.1它是 jar 文件,您将看不到任何 webjars-requirejs.js 里面。因此,这是默认情况下 webjar 与 requirejs 不兼容的情况。

这是另一件事:

记得有方括号,否则不会发生 CDN 替换。对于非 requirejs 就绪的脚本,在声明路径时不应使用方括号。否则,rjs 将拒绝构建不支持的错误路径回退。

所以尝试从路径中删除方括号:

'angular-easyfb': '../lib/angular-easyfb/angular-easyfb',
于 2015-07-14T08:20:05.583 回答