3

動的ルートを作成しようとすると、いくつかの「予期しないトークン<」エラーが発生します。通常のルートは正常に機能します。したがって、次のルートを設定すると、次のようになります。

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

リクエストはサーバーに送られ、エクスプレスキャッチオールルートハンドラーによってキャッチされます。次に、アングルがキックインし、エクスプレスのapiルート、api / userをリクエストし、データ、コントローラー、テンプレートをバインドすると、すばらしいページが表示されます。すべてが正常に動作します。エラーはありません。

動的ルートまたはより深さのあるルートを作成しようとすると、そのルートを要求しようとすると、予期しないトークンエラーが発生します。

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

たとえば、/ user / 3をリクエストするとエラーが発生し、addUserCtrlが呼び出されることはありません。これを引き起こしている可能性のあるアイデア。

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

/ user / showをリクエストすると、エラーもスローされます。コンソールでは、インデックスの本体にロードするすべてのAngularファイル(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

4 に答える 4

3

どうやらこれは実際には角の問題ではなく、明白な問題です。

問題は、index.jade に含まれる angular 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 は先頭のスラッシュなしでロードされましたが、express で問題が発生し、構文エラーが発生したため、角度が壊れた可能性がありますが、正確な理由はわかりません。

于 2013-02-06T03:26:26.790 に答える
1

templateUrl は絶対である必要があります。それ以外の場合、URL に複数のスラッシュ/深さのレベルがある場合、Express はチョークします。

.when('/user/show,{
  templateUrl: '/views/user/new', /* add slash */
  controller: "addUserCtrl"
})
于 2013-03-06T19:39:01.607 に答える
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タスクgulp-injectによって生成されるため、gulp-injectの構成を次のように変更します

inject: { addRootSlash: true }

そしてそれは私のために働きます:)

于 2015-10-14T12:42:24.610 に答える