2017-12-16 6 views
2

で作業していません私は怠惰なロードされたURLに直接アクセスしようとします。怠惰なロードされたモデルに角度遅延ロードは、私は角度.NETコア+ WebPACKの3 + 4</p> <p>私の遅延ロードは時にアプリ内で使用された場合、ナビゲーションバースルーと同じように、うまく動作します しかし、失敗した実行している直接URL

fail: Microsoft.AspNetCore.NodeServices[0] 
     ERROR { Error: Uncaught (in promise): Error: Cannot find module './components/members/members.module.ngfactory'. 
     Error: Cannot find module './components/members/members.module.ngfactory'. 
      at /root/myApp/bin/Release/netcoreapp2.0/publish/ClientApp/dist/vendor.js:35933:9 
      at ZoneDelegate.module.exports.ZoneDelegate.invoke (/root/myApp/bin/Release/netcoreapp2.0/publish/ClientApp/dist/vendor.js:92811:26) 
      at Object.onInvoke (/root/myApp/bin/Release/netcoreapp2.0/publish/ClientApp/dist/vendor.js:14833:33) 
      at ZoneDelegate.module.exports.ZoneDelegate.invoke (/root/myApp/bin/Release/netcoreapp2.0/publish/ClientApp/dist/vendor.js:92810:32) 
      at Zone.module.exports.Zone.run (/root/myApp/bin/Release/netcoreapp2.0/publish/ClientApp/dist/vendor.js:92561:43) 
      at /root/myApp/bin/Release/netcoreapp2.0/publish/ClientApp/dist/vendor.js:93238:57 
      at ZoneDelegate.module.exports.ZoneDelegate.invokeTask (/root/myApp/bin/Release/netcoreapp2.0/publish/ClientApp/dist/vendor.js:92844:31) 
      at Object.onInvokeTask (/root/myApp/bin/Release/netcoreapp2.0/publish/ClientApp/dist/vendor.js:14824:33) 
      at ZoneDelegate.module.exports.ZoneDelegate.invokeTask (/root/myApp/bin/Release/netcoreapp2.0/publish/ClientApp/dist/vendor.js:92843:36) 
      at Zone.module.exports.Zone.runTask (/root/myApp/bin/Release/netcoreapp2.0/publish/ClientApp/dist/vendor.js:92611:47) 

... この問題に対する既知の修正または回避策は、私は、ルータがアプリ内で動作する方法と「リダイレクト」を模倣する可能性があります要求

+0

ルート設定時に{useHash:true}を試しましたか? – pixelbits

+0

固定していただきありがとうございます!それがなくても動作させる方法はありますか? –

答えて

1

使用ハッシュロケーション戦略:

RouterModule.forRoot([...], { useHash }); 

なぜこれが機能しますか?

IISを含むほとんどのWebサーバーでは、ハッシュの前の部分がサーバー上の実際のページへのパスとして扱われます。しかし、このルートは実際にはクライアント側アプリケーション内にのみ存在します。ディープリンクが最初にサーバーに当たるが、ルートは存在しないため、404エラーが表示されます。 #ロケーション戦略を使用すると、サーバーが#の後の部分を無視するため、サーバーの観点からページを正しく解決するので、これを修正します。 Angularは、残りの部分を適切なページに移動させます。

SPAへのディープリンクが正常であることをWebサーバに伝える必要があります。 https://gingter.org/2017/03/20/deep-link-angular-spa-iis/

関連する問題