2017-10-09 22 views
0

我有一個現有的ReactJS應用程序,它使用querystring npm來讀取查詢參數。查詢參數並表示SSR

我使用下面的代碼:

const queryString = require('query-string') 

const query = queryString.parse(location.search) 

此刻,我想轉換爲SSR的應用程序,但每當我構建解決方案,它編譯,但運行在服務器(expressjs)結果以下錯誤信息:

var query = queryString.parse(location.search); 
          ^
ReferenceError: location is not defined 

任何想法如何解決這個問題?我仍然需要使用querystring npm,或者用expressJS解決這個問題嗎?

非常感謝!

+0

錯誤說'location'變量是'undefined',因爲'location'是瀏覽器屬性,在節點上你不能訪問'location',因爲基本上服務器上沒有'location'。 –

回答

1

location僅在瀏覽器上存在。

如果要分析你需要直接從請求解析它在服務器上的QS:

var query = queryString.parse(req.query); 

或者,如果你想要的邏輯來運行客戶端只可以使用:

var query = (typeof document === 'undefined') ? {} : queryString.parse(location.search); 
+0

thnx,但是如果我使用你的第一個解決方案,並使用npm start在本地運行我的開發機器,則會出現以下錯誤:./src/components/Results/ResultsPage.js 第22行:'req'未定義no- undef這是否意味着我只能繼續使用我的服務器端服務器進行開發並運行?編輯:甚至試圖運行我的節點服務器結果在var query = queryString.parse(req.query); ^ ReferenceError:req未定義 – user3611459

+0

您需要使用Express API端點中的請求對象[基本示例](https://expressjs.com/en/starter/hello-world.html) – Daniel