[問題] 新手 Node.js+React+一個端點
我這邊遇到了前後端如何接在一起的問題,想請各位前輩幫幫忙
專案是前端用:React,後端用:node.js
最初我啟動 react 是 3000 port, node 是 5500 port
也就是在 react 中長這樣 fetch("http://localhost:5500/api")
可是我的老師希望只在一個 port 啟動
就是類似在 node 使用樣板語言讓後端資料能直接渲染畫面那樣
從頭到尾只會有一個網址
我在網路上找了很多資料,都是跟我一樣的做法 (兩個端點)
或是在 package.json 中設置代理服務器
"proxy": "http://localhost:5500/" (可是這也是兩個端點)
有沒有人有遇過類似的做法,或是相關關鍵字可以提供給我查詢
謝謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.197.56.209 (澳大利亞)
※ 文章網址: https://www.ptt.cc/bbs/Web_Design/M.1567992270.A.AB5.html
推
09/09 09:46,
5年前
, 1F
09/09 09:46, 1F
事實上我試過直接在 React 中打包完
將整包靜態資源放入 node 的 public 資料夾(不太熟悉怎麼做,手法有點粗糙)
然後因為資料夾大概會長這樣
-public
-index.html
-mainifest.json
-static
-css
-js
-media
我直接先在 app.use 中使用 res.sendFile(path.join(__dirname + '/index.html'))
抓取由 React 來的 index.html 的路徑
可以抓取到首頁,但是點擊按鈕要 fetch 資料時就會出現 404 not found 錯誤
感覺是因為我的路徑設置不對,或靜態資料放置的位置不對
可是我找不到相關資料,不知道怎麼修正
所有資料如下:程式碼中包含很多額外的垃圾我沒有刪掉抱歉
React: https://github.com/jenifers001d/AzureReact/blob/master/src/App3.js
Node: (48 line) https://github.com/jenifers001d/AzureNode/blob/master/app.js
問題圖片集: https://hackmd.io/@OQeeWHXgRk6Fwb8MEh1Jww/HktJiIX8r
※ 編輯: Moneyyyyy (49.197.56.209 澳大利亞), 09/09/2019 13:01:11
→
09/09 12:56,
5年前
, 2F
09/09 12:56, 2F
推
09/09 15:00,
5年前
, 3F
09/09 15:00, 3F
試了G大的方法,可以成功運行,真的是非常感謝
稍微研究了一下 concurrently 是同時執行兩條監聽命令
(實際上還是兩個端點,那麼如果我想將其部署在 Heroku 上)
(node 中 app.listen(5500); 是不是要做修改?)
另外,實務上是比較偏向這種,將後端(node.js寫成)的檔案放在 React 中
而不是將 React build 完,將靜態資料放進後端(node.js寫成)的public資料夾?
還是後者也可以做到,只是我不會(掩面
如果後者也可以做到,不知道有沒有網路上的參考資料能讓我學習?
再麻煩有資源的前輩告知,謝謝
※ 編輯: Moneyyyyy (124.184.105.23 澳大利亞), 09/09/2019 21:08:23
→
09/10 07:07,
5年前
, 4F
09/10 07:07, 4F
→
09/10 07:07,
5年前
, 5F
09/10 07:07, 5F
抱歉這邊不理解,多宣告是指針對我上述哪個問題?
→
09/10 07:18,
5年前
, 6F
09/10 07:18, 6F
→
09/10 07:18,
5年前
, 7F
09/10 07:18, 7F
這邊我不確定是不是因為我不太懂沒說清楚
我目前的理解是 React 啟動在 http://localhost:3000
而我的後端啟動在 http://localhost:5500
這樣是兩個端點,React 中用 fetch 取資料時需要連結到另一個 url
另外,如果我將 React 和後端分別部署在 Heroku 就會是兩個不同的 url
但是目前老師的要求是,例如 React 啟動在 http://localhost:3000
我點擊了一個按鈕後,會連到 http://localhost:3000/book (這個不會明確顯示在網址欄),然後後端送回資料渲染畫面
如果將上述部署在 Heroku 就會是只有一個 url
例如:https://myapp.herokuapp.com/
我的 fetch 直接放 "/book" 參數就好,不會是放不一樣的 url
※ 編輯: Moneyyyyy (124.184.105.23 澳大利亞), 09/10/2019 10:55:10
→
09/10 18:30,
5年前
, 8F
09/10 18:30, 8F
→
09/10 18:30,
5年前
, 9F
09/10 18:30, 9F
→
09/10 18:30,
5年前
, 10F
09/10 18:30, 10F
→
09/10 18:30,
5年前
, 11F
09/10 18:30, 11F
→
09/10 19:47,
5年前
, 12F
09/10 19:47, 12F
→
09/10 19:47,
5年前
, 13F
09/10 19:47, 13F
→
09/10 19:47,
5年前
, 14F
09/10 19:47, 14F
→
09/10 19:47,
5年前
, 15F
09/10 19:47, 15F
→
09/10 19:47,
5年前
, 16F
09/10 19:47, 16F
→
09/10 19:47,
5年前
, 17F
09/10 19:47, 17F
謝謝 b大a大 的解說,我有稍微理解了
推
09/11 03:58,
5年前
, 18F
09/11 03:58, 18F
→
09/11 03:58,
5年前
, 19F
09/11 03:58, 19F
→
09/11 03:59,
5年前
, 20F
09/11 03:59, 20F
→
09/11 04:00,
5年前
, 21F
09/11 04:00, 21F
→
09/11 04:00,
5年前
, 22F
09/11 04:00, 22F
→
09/11 04:00,
5年前
, 23F
09/11 04:00, 23F
→
09/11 04:02,
5年前
, 24F
09/11 04:02, 24F
→
09/11 04:02,
5年前
, 25F
09/11 04:02, 25F
→
09/11 04:04,
5年前
, 26F
09/11 04:04, 26F
推
09/11 04:10,
5年前
, 27F
09/11 04:10, 27F
→
09/11 04:11,
5年前
, 28F
09/11 04:11, 28F
推
09/11 04:15,
5年前
, 29F
09/11 04:15, 29F
→
09/11 04:18,
5年前
, 30F
09/11 04:18, 30F
→
09/11 04:20,
5年前
, 31F
09/11 04:20, 31F
→
09/11 04:21,
5年前
, 32F
09/11 04:21, 32F
→
09/11 04:22,
5年前
, 33F
09/11 04:22, 33F
→
09/11 04:23,
5年前
, 34F
09/11 04:23, 34F
→
09/11 04:23,
5年前
, 35F
09/11 04:23, 35F
→
09/11 04:24,
5年前
, 36F
09/11 04:24, 36F
→
09/11 04:25,
5年前
, 37F
09/11 04:25, 37F
→
09/11 04:27,
5年前
, 38F
09/11 04:27, 38F
對,我的基礎有很多地方要加強,因為學得有點亂
我在接觸現代框架前,單純只寫js,也明白不用跑 web server 就能在瀏覽器上出現
但是使用現代框架,我自己還沒去搞懂 webpack 那些
想說先能動起來就好(這是我自己的問題 >"<
謝謝 s大 不厭其煩詳盡的解說
在我詢問完朋友後,最後也是歸到對於 http server 和 route 的不熟悉
等我試試新的想法,順利解完後再 po 上來補充
謝謝大家的回應
※ 編輯: Moneyyyyy (131.181.158.30 澳大利亞), 09/11/2019 11:03:32
推
09/15 00:27,
5年前
, 39F
09/15 00:27, 39F
推
09/15 00:34,
5年前
, 40F
09/15 00:34, 40F
→
09/15 00:35,
5年前
, 41F
09/15 00:35, 41F
推
09/21 16:35,
5年前
, 42F
09/21 16:35, 42F
→
09/21 16:35,
5年前
, 43F
09/21 16:35, 43F
→
09/21 16:35,
5年前
, 44F
09/21 16:35, 44F
→
09/21 16:35,
5年前
, 45F
09/21 16:35, 45F
→
09/21 16:35,
5年前
, 46F
09/21 16:35, 46F
→
09/21 16:35,
5年前
, 47F
09/21 16:35, 47F
Web_Design 近期熱門文章
PTT數位生活區 即時熱門文章