2016-11-22 50 views
0

形勢整合所有Angular2和哈皮路線

我開發使用哈皮服務器REST調用和多頁Angular2網站客戶端的Web應用程序。

哈皮爲所有Angular2文件到客戶端:

let serverDirPath = path.resolve(__dirname); 
server.route({ 
    method: "GET", 
    path: "/{param*}", 
    config: { 
     auth: false, 
     handler: { 
      directory: { 
       path: path.join(serverDirPath, "../client"), 
       index: true 
      } 
     } 
    } 
}); 

調用服務器根成功返回「的index.html」,之後的Angular2網站完美的作品!對Hapi定義的路線的所有呼叫也能正常工作。

問題

但是,如果我執行一個GET任何Angular2定義的路徑(例如到達頁「/用戶」),哈皮找不到路線和返回錯誤404這是可能是因爲該路線未在Hapi服務器上定義。請注意,如果我從「index.html」頁面導航到「/ users」路線,那麼路線完美無缺!

問題

我怎樣才能達到 「/用戶」 有直接的GET調用頁面?如果可能的話,我想將所有呼叫都轉接到相應的Angular2路由(如果存在的話)。

預先感謝您!

編輯:解

我解決它!在app.module.ts,在供應商的聲明,我加了這一點:

{ 
     // Strategy to serve pages with /#/{path}. It's required to resolve Angular2 routes when using hapi. 
     provide: LocationStrategy, 
     useClass: HashLocationStrategy 
    }, 

所有Angular2 URL必須通過/#/(例如本地主機/#/家),這對我的偉大工程之前。

回答

0

我有同樣的問題和我進行了自定義路由處理,像這樣

server.route({ 
    method: 'GET', 
    path: '/{files*}', 
    handler: function(req, reply, next) { 
     var reg = /(\.js)|(\.css)|(\.png)|(\.jpg)|(\.jpeg)|(\.eot)|(\.woff)|(\.ttf)|(\.eot)|(\.svg)/; 
     if(req.params.files && reg.test(req.params.files)) { 
      reply.file(req.params.files); 
     } 
     else{ 
      reply.file('index.html'); 
     } 

    } 

}); 

還增加了這方面的配置

server.connection({ 
... 
routes: { 
    files: { 
     relativeTo: Path.join(__dirname, './public') 
    } 
    } 
}); 

還沒有找到處理任何聰明的方式這