2 回答

TA貢獻1846條經(jīng)驗 獲得超7個贊
我認為您不能將root用作代理。在蓋茨比開發(fā),代理,像這樣處理這個:
app.use(`${prefix}/*`, (req, res) => { ... }
因此,如果prefix將設(shè)置為/,它將變?yōu)?/*不起作用。即使/*gatsby的工作原理像一樣,所有來自gatsby服務器的路由都將重定向到代理服務器,因為proxy的先例比其余路由要高,因此gatsby根本沒有任何機會提供任何頁面。
prefix必須是一個以斜杠開頭的單詞,即/api:
proxy: {
prefix: '/api',
url: 'http://localhost:3000'
},
然后,您可以使用它:
fetch(`/api/tasks`)

TA貢獻1752條經(jīng)驗 獲得超4個贊
這應該發(fā)表評論,但是格式不好,所以我將其發(fā)布為答案。我不確定確切的原因是什么,但是有一些想法可以幫助您進行調(diào)試。
您可能會收到帶有內(nèi)容類型標頭的HTML響應,說它是JSON。通過檢查瀏覽器devtools中的網(wǎng)絡(luò)面板來驗證是否是這種情況。
確保該請求確實命中了您的快遞服務器。如果1.為true,則很有可能沒有到達Express服務器,HTML來自Gatsby的dev服務器。
如果以上兩點都正確,那么也許可以調(diào)試Gatsby源代碼以找出為什么決定處理該請求而不是轉(zhuǎn)發(fā)該請求。德里克·阮(Derek Nguyen)指出了地點。它也是一個快速服務器,因此對您來說應該沒問題。
添加回答
舉報