1つのサービスに異なるソフトウェア製品がありますが、これは1つのサーバーに導入する必要があります。クライアントはcreate-react-appによるビルド設定で反応して構築され、サーバはNode.jsとExpressを実行します。Expressでクライアントサイドルーティングを使用して複数の反応するアプリケーションにサービス
私はそれが次のように行われているサーバーから単一のアプリケーションに役立つ:私は、サーバーから複数のアプリケーションにサービスを提供できるようにしたい
// App.js
// ...
// Entry point for data routes (API)
app.use('/data', indexRoute);
if(process.env.NODE_ENV !== 'development') {
app.use(express.static(path.join(__dirname, 'build-client')));
app.get('/*', function(req, res) {
return res.sendFile(path.resolve(__dirname, 'build-client' , 'index.html'));
});
}
を。私はどうしたらいいですか?
私が試みたのは、アセットのさまざまな静的パスを配線し、クライアントが別の名前で区切ることですが、動作しませんでした。このように:
// App.js
// ...
// Entry point for data routes (API)
app.use('/data', indexRoute);
if(process.env.NODE_ENV !== 'development') {
app.use(express.static(path.join(__dirname, 'build-client')));
app.use(express.static(path.join(__dirname, 'build-admin')));
app.get('/client/*', function(req, res) {
return res.sendFile(path.resolve(__dirname, 'build-client' , 'index.html'));
});
app.get('/admin/*', function(req, res) {
return res.sendFile(path.resolve(__dirname, 'build-client' , 'index.html'));
});
}
私はまた、このようにそれを実行しようとしましたが、Expressのスローエラーしている:いいえデフォルトエンジンが指定されていませんし、拡張子が提供されなかった。
if(process.env.NODE_ENV !== 'development') {
// Admin paths
app.use('/admin', express.static(path.join(__dirname, 'build-admin')));
app.get('/admin/*', function(req, res) {
return res.sendFile(path.resolve(__dirname, 'build-admin' , 'index.html'));
});
// Site paths
app.use('/', express.static(path.join(__dirname, 'build-client')));
app.get('/*', function(req, res) {
return res.sendFile(path.resolve(__dirname, 'build-client' , 'index.html'));
});
}
私はこのか何かを達成することができる方法同様?
アプリケーションビルドは別々に生成する必要があり、ユーザーがそのような多くのコンテンツをダウンロードしないようにする必要があります。現在の設定では、これは私が達成したいものです。 – sznrbrt
https://github.com/thejameskyle/react-loadableで修正できます。コードを分割するための超簡単なワット。 –
そしてなぜノードが必要ですか?あなたはただ一つのフォルダにすべての別々のビルドフォルダを置き、htmlを使ってそれらに移動するだけです。 –