4 votes

Node.js react sert une url de ressource incorrecte

J'ai rencontré des problèmes de nœuds pour résoudre le chemin de mon application Create React.

Question :

Les fichiers Assets (chunk.js) sont résolus par un chemin relatif plutôt que par un chemin absolu. chemin absolu.

Lorsque je visite le site Web à partir du dossier racine (exemple.com) et que j'appuie sur le bouton /games/ L'URL fonctionne bien. Cependant, si je rafraîchis, il ajoute /games dans l'URL.

Par exemple :

http://movies-finder.surge.sh/movies/419704

^ Visitez la page et rafraîchissez-la.

Lien correct :

https://example.com/static/js/main.b9f8ee12.chunk.js

Lien incorrect : (Cela se produit lorsque l'utilisateur rafraîchit la page).

https://example.com/games/static/js/main.e50e1c49.chunk.js

Je veux juste m'assurer, que je ne rencontre pas /games quand on accède à mes biens.

(Il n'est pas nécessaire de /games/ ) donc cassé :(

Structure des dossiers :

-/
 - server.js
 - public
    - index.html
 - package.json
 - Build

Package.json :

{
  "name": "games-finder",
  "version": "0.1.2",
  "private": true,
  "homepage": ".",
  "proxy": "http://localhost:3001/",
  "dependencies": {
    // dependencies
  },
  "devDependencies": {
    // dev dependencies for the project.
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "server": "node-env-run server.js --exec nodemon | pino-colada",
    "dev": "run-p server start",
    "heroku-dev": "run-p server start"
  }
}

server.js :

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = process.env.PORT || 3001;
const path = require('path');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(pino);

app.get('/api/greeting', (req, res) => {
  const name = req.query.name || 'World';
  res.send(JSON.stringify({ greeting: `Hello ${name}!` }));
});

if (process.env.NODE_ENV === 'production') {

  // Serve any static files
  app.use(express.static('build'));

  // Handle React routing, return all requests to React app
  app.get('*', (req, res) => {
   res.sendFile(path.resolve(__dirname, 'build', 'index.html'));
  });
}

app.listen(port, () => console.log(`Listening on port ${port}`));

Veuillez m'aider à identifier le problème. J'ai passé quelques jours à essayer de déboguer le problème.

Je veux juste m'assurer, que je ne rencontre pas /games quand on accède à mes biens.

2voto

Aleksandr Khaustov Points 136

Cela se produit pour les raisons suivantes "homepage": "." dans votre package.json, essayez de supprimer cette ligne.

Description détaillée ici https://stackoverflow.com/a/58508562/9173730

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X