2017-10-09 17 views
0

私はクエリーストリングnpmを使用してクエリーパラメータを読み取る既存のReactJSアプリを持っています。クエリパラメータとエクスプレス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ブラウザにのみ存在します。

あなたが要求から直接それを解析する必要があるサーバー上の適量解析する場合:

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

を使用すると、クライアント側を実行するためのロジックをしたい場合、またはあなただけが使用できます。

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

thnxですが、最初の解決策を使用し、npm startを使用してローカルでmy devマシンを実行すると、次のエラーが発生します。./src/components/Results/ResultsPage.js 22行目: 'req' undefこれは、私のサーバー側のサーバーを稼働して開発を続けることができるということですか?編集:私のノードサーバーの結果を実行しようとしてもvar query = queryString.parse(req.query); ^ ReferenceError:reqが定義されていません – user3611459

+0

Express APIエンドポイント[基本例](https://expressjs.com/en/starter/hello-world.html)のリクエストオブジェクトを使用する必要があります。 – Daniel

関連する問題