错误:在此配置中,Angular需要Zone.js

时间:2018-02-01 17:08:05

标签: angular grails-2.0

我试图运行在Angular 5中使用的Grails 2.3.9应用程序。为此我创建了一个新的Grails项目和一个带有 angular-cli 的新角度项目({{ 1}})。在此之后我做了这些步骤。

  1. 构建角度项目以获取资源包:ng new app

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

  3. 中的Grails项目中
  4. 在grails中创建一个新的Controller和视图,以提供angular

  5. 的索引
  6. index.gsp 中,我添加了在角度构建中创建的 index.html 的内容,并用Grails创建脚本的src替换链接语句指向js / lib / ...以便Grails能够正确地提供这些文件

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

    ng build --prod

    我尝试在Apache服务器中复制dist文件夹,一切正常,所以,我不认为问题与Error: In this configuration Angular requires Zone.js 之后生成的文件有关。

1 个答案:

答案 0 :(得分:3)

好的,我弄明白了,问题是我引用index.gsp中的角度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