iT邦幫忙

0

node.js angular build ,靜態路徑與router

將node.js的靜態路徑設定於public資料夾下

app.use(express.static(path.join(__dirname, 'public')));

angular build打包後也放置到public下,
假定port設為3000,連線到
http://localhost:3000/
可連結到build出來的首頁沒問題,裡面的router(angular)操作也沒問題,
但我發現假定我現在位置在
http://localhost:3000/a/b
點選重新整理(F5)的時候,會顯示node.js 的 not found 頁面,
因anguler的router雖然有a/b,但http://localhost:3000/ 基本上應該還是會去跑server,會接不到。

這個部份該怎麼設定?

看更多先前的討論...收起先前的討論...
AlanShun iT邦新手 5 級 ‧ 2018-09-27 14:27:30 檢舉
我們要在express設定讓所有路由回應index.html才能讓angular的生態系控管整個APP,

```js
app.get('/*', (req, res) => {
res.sendFile(path.join(__dirname, 'public', 'index.html'));
});
```
大概是上面這的做法,加在上面那行的下面
Zaku iT邦新手 4 級 ‧ 2018-09-27 17:09:38 檢舉
感謝大大,好像可以work了,但看不是很懂,這之間是怎麼對應的?
Zaku iT邦新手 4 級 ‧ 2018-09-27 17:17:28 檢舉
這樣好像會衍生另外的問題就是router寫的api會call不到,因為全部轉向index.html?
Zaku iT邦新手 4 級 ‧ 2018-09-27 17:40:41 檢舉
好像可以了,必須設在node.js辨識的router之後,讓他先跑過已經設置的router,我再試試

尚未有邦友回答

立即登入回答