Error: In this configuration Angular requires Zone.js

Error: In this configuration Angular requires Zone.js

我正在尝试 运行 在内部使用的 Grails 2.3.9 应用程序 Angular 5. 为此,我创建了一个新的 Grails 项目和一个新的 angular 项目 angular-cli (ng new app)。在此之后我做了这些步骤。

  1. 构建angular项目以获取资源包:ng build --prod

  2. 复制已经创建的dist文件夹的文件,粘贴到web-app/js/lib

  3. 的Grails项目中
  4. 在 grails 中创建一个新的控制器和视图来为 angular

  5. 提供索引
  6. index.gsp中我把index.html的内容在 angular 中创建 用 Grails 创建并替换脚本的 src 创建 link 语句指向 js/lib/... 以便 Grails 能够正确地提供这些文件

当我 运行 我的 Grails 应用程序并转到 angular 到 运行 的指定地址时,我得到一个空白页面并且在控制台中出现此错误:

Error: In this configuration Angular requires Zone.js

我尝试复制 Apache 服务器中的 dist 文件夹,一切正常,因此,我认为问题与 ng build --prod 后生成的文件无关。

好的,我明白了,问题是我在 index.gsp:

中引用 angular js 资源的方式

走错了

index.gsp

<html>
   <head></head>
   <body>
     <app-root></app-root>
     <script src="${createLink(uri:'js/lib/inline.bundle.js')}"</script>
     <script src="${createLink(uri:'js/lib/polyfills.bundle.js')}"</script>
     <script src="${createLink(uri:'js/lib/main.bundle.js')}"</script>
   </body>
</html>

正确的方法

ApplicationResources.groovy

modules = {
  ...
  angular{
    resource url:"js/lib/styles.bundle.css", nominify:true, disposition: 'head'
    resource url:"js/lib/inline.bundle.js", nominify:true
    resource url:"js/lib/polyfills.bundle.js", nominify:true
    resource url:"js/lib/main.bundle.js", nominify:true
  }
}

index.gsp

<html>
   <head>
     ...
     <r:require modules="angular"/>
     <r:layoutResources/>   
   </head>
   <body>
     <app-root></app-root>
     <r:layoutResources/>
   </body>
</html>

找到了在 grails 2 中添加资源的正确方法here