私はExpressでちょっとした作業をしましたが、Reactには新しいことがあります。 Reactはすでに動作しているExpressサーバに接続していますが、私のExpress Appコンポーネントのfetch('/')
をExpressアプリケーションのインデックスルートに当てるのに問題があります。たとえば、私はExpressでこれらのルートを持っています:×React - フェッチ( '/')はExpress.routerのインデックスルートにヒットしません
app.use('/', routes);
app.use('/users', users);
両方のルートはExpressで同じです。彼らはMongoDBへの簡単な呼び出しを行い、応答はres.json(data)
です。また、エクスプレスポートでこれらのルートを純粋にテストすると、両方とも正常に動作します。
以下は私のReactコンポーネントです。問題は、fetch('/')
を使用してExpressに対応するapp.use('/', routes);
をヒットさせようとするときです。私がfetch('/users')
に変更すると動作します。もちろん
import React, { Component } from 'react';
import './App.css';
class App extends Component {
state = {users: []}
componentDidMount() {
fetch('/') // this route doesn't work with Express!
.then(res => res.json())
.then(users => this.setState({ users }));
}
render() {
return (
<div className="App">
<h1>Users</h1>
{this.state.users.map(user =>
<div key={user.id}>{user.username}</div>
)}
</div>
);
}
}
export default App;
私は('/index')
か何かにインデックスのルート名を変更する可能性が、私はすべての可能であればExpressのアプリで('/')
ルートとしてそれを維持したいと思います。
私が間違ってやっていることを指摘できれば、私は試してみることができます。私は感謝します。前もって感謝します!フロントエンドアプリで
私の理解していないことは、フロントエンドアプリケーションはどのようにサービスされていますか?アプリケーション(ルートに存在すると想定している)とフェッチしようとしているデータのルートの場所との間に矛盾はありませんか? ''/''を取り出すことも可能ですか? – Jaxx
Reactアプリは、私のExpressアプリケーションのルートにある 'client'というフォルダにあります。私はReactアプリケーションのpackage.jsonに '' proxy ":" http:// localhost:3001 "'(私のExpressアプリケーションがホストされているポートです)を使用しています。私は 'http:// localhost:3000'でReactアプリケーションを実行し、Expressを起動して、' fetch( '/') 'を使わない限りすべて正常に動作します。だから多分あなたは何かを打ったことがあるかもしれません。おそらく、私がフェッチで呼び出しようとしている、ReactのルートとExpressルートの間に矛盾がありますか? – mikeym
そのプロキシ設定を削除して、代わりに 'fetch(" http:// localhost:3001/")'を実行して、動作しているか確認してください。そして、はい、間違いなく紛争が起こっています。 – Jaxx