Angular Js Unexpected Token错误动态路由

时间:2013-02-06 00:17:31

标签: node.js express angularjs

我得到了几个“意外的令牌<”我尝试创建动态路由时出错。 正常路线工作正常。所以,如果我设置以下路线:

.when('/user',{
    templateUrl: 'views/user/new', 
    controller: "addUserCtrl"
  })

请求进入服务器并被我的快速捕获所有路由处理程序捕获,然后角度启动和请求表达'api路由,api /用户,绑定数据,控制器和模板,我看到一个很好的页面。一切正常。没有错误。

如果我尝试创建动态路由或更深入的路由,当我尝试请求该路由时,我会收到意外的令牌错误:

.when('/user/:id',{
    templateUrl: 'views/user/new', 
    controller: "addUserCtrl"
  })

例如,当我请求/ user / 3时,我得到错误,并且从不调用addUserCtrl。可能导致这种情况的任何想法。

.when('/user/show,{
    templateUrl: 'views/user/new', 
    controller: "addUserCtrl"
  })

请求/ user / show也会抛出错误。在控制台中,错误显示在我在索引正文中加载的所有角度文件(angular.js,App.js,services.js,controllers.js,filters.js,directives.js)的请求旁边html的。

我注意到每当我向路线添加多个斜杠时就会发生此问题。如果我尝试/ user / show,我可以看到以下请求:

   /user/show

   syntax errors for the below:
   /user/js/App.js
   /user/js/lib/angular/angular.js
   /user/js/filters.js
   /user/js/controllers.js'
   /user/js/services.js
   /user/js/directives.js

如果我尝试/ abc / def,我将收到以下请求:

   /abc/def

    syntax errors for the below:
   /abc/js/App.js
   /abc/js/lib/angular/angular.js
   /abc/js/filters.js
   /abc/js/controllers.js'
   /abc/js/services.js
   /abc/js/directives.js

4 个答案:

答案 0 :(得分:6)

我有同样的问题,就像atentaten描述的问题是由js文件的相对路径引起的。但是,它与Express无关。它也可能是由html文件头部的脚本标记的相对包含路径引起的。所以,为了澄清,我改变了我的HTML:

<script src="bower_components/angular/angular.js"></script>

为:

<script src="/bower_components/angular/angular.js"></script>

答案 1 :(得分:3)

显然,这不是一个有角度的问题,而是一个明确的问题。

问题是我的index.jade包含了我的角度js中缺少的开始斜杠:

script(src='js/lib/angular/angular.js')
script(src='js/App.js')
script(src='js/services.js')
script(src='js/controllers.js')
script(src='js/filters.js')
script(src='js/directives.js')

我将它们改为:

script(src='/js/lib/angular/angular.js')
script(src='/js/App.js')
script(src='/js/services.js')
script(src='/js/controllers.js')
script(src='/js/filters.js')
script(src='/js/directives.js')

错误消失了。虽然加载的js没有起始斜杠,但它仍然会导致快速问题,造成语法错误,这可能会破坏角度,但我不确定原因。

答案 2 :(得分:1)

templateUrl需要是绝对的,否则如果url中有多个斜杠/深度级别,Express将会阻塞:

.when('/user/show,{
  templateUrl: '/views/user/new', /* add slash */
  controller: "addUserCtrl"
})

答案 3 :(得分:0)

对于angularJS应用程序中的ui-router动态路由,会发生这种情况。我有同样的错误。通过改变路径来解决

<script src="app/components/services/campaign.services.js"></script>

<script src="/app/components/services/campaign.services.js"></script>

但在我的情况下,index.html文件路径是由gulp task gulp-inject 生成的,所以我更改了gulp-inject的配置,如

inject: { addRootSlash: true }

它适用于我:)