我得到了几个“意外的令牌<”我尝试创建动态路由时出错。 正常路线工作正常。所以,如果我设置以下路线:
.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
答案 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 }
它适用于我:)