J'utilise express pour mon API. J'ai un dossier nommé app et un autre dossier nommé server. app est l'application cliente, utilisant create-react-app comme passe-partout, tandis que le serveur est l'application express.js pour l'API.
dans le fichier app.js du serveur, j'ai écrit
app.get("*", function (req, res) {
res.sendFile(path.resolve(__dirname, '../app/build/index.html'));
})
Mais quand j'appelle un point de terminaison API, j'obtiens
Vous devez activer JavaScript pour exécuter cette application.
dans la réponse. Je suis confus; Qu'est-ce qui ne va pas?
Dans le répertoire de construction, vous avez plus de fichiers que simplement index.html. Vous avez également build/js/main.buildNumber.js et build/css/main.buildNumber.css. Ainsi, lorsque votre frontend fait une demande à https://votredomaine.com/css/main.buildNumber.js , il renvoie index.html pas main.js.
Vous servez le contenu du dossier de construction statiquement avec express.static
app.use('/', express.static(__dirname + '/'));
Ou vous pouvez regarder dans le module de nœud "servir" pour héberger votre application. Cela fonctionnera bien avec react-router. npm i -g serve
puis cd build
puis serve . --single -p 5000
. Cela servira votre application sur le port 5000.