Heroku ENOENT: aucun fichier ou répertoire de stat '/app/build/index.html'
Je vais avoir des difficultés à exécuter un test simple site dans Heroku. Pour une raison quelconque, il essaie de servir le contenu de /app/construire/quand je le veux servir de /build/.
Erreur: ENOENT: aucun fichier ou répertoire de stat '/app/build/index.html'
J'ai lu ici de ne pas utiliser __dirname dans l'express app comme Heroku défini dans /app et que je devrais utiliser.mdc();
process.env.PWD = process.cwd();
Mais il ne fonctionne pas. Ci-dessous mon server.js express application et la structure des dossiers
const path = require('path');
const express = require('express');
const port = process.env.PORT || 8080;
const app = express();
process.env.PWD = process.cwd();
app.use(express.static(process.env.PWD + '/build'));
app.get('*', function (req, res) {
const index = path.join(process.env.PWD, '/build/index.html');
res.sendFile(index);
});
app.listen(port);
console.log('server_started');
au lieu de
J'ai essayé à l'origine et cela ne fonctionnait pas. J'ai trouvé le lien ci-dessus qui dit _dirname est lié à 'app' dans heroku et à essayer de processus.mdc() mais elle fait la même chose.
process.env.PWD
avez-vous essayé d'utiliser __dirname
, j'ai un site déployé avec quiJ'ai essayé à l'origine et cela ne fonctionnait pas. J'ai trouvé le lien ci-dessus qui dit _dirname est lié à 'app' dans heroku et à essayer de processus.mdc() mais elle fait la même chose.
OriginalL'auteur screenm0nkey | 2016-09-16
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, ne pas utiliser PWD. Utilisez simplement __dirname. Il fonctionne sur Heroku exactement comme il fonctionne partout ailleurs. À l'aide de la DDT rend votre application plus fragiles si vous, par exemple, exécuter un binaire à partir d'un non-répertoire local.
Deuxièmement, la raison que le fichier n'existe pas sur Heroku est probablement parce que vous l'avez ajouté à votre .gitignore fichier ou n'avez généralement pas vérifiée dans le dépôt git. Vous pouvez voir ce à partir du codage de la couleur de votre rédacteur de tous les fichiers archivés dans git sont blancs, ceux ignorés sont gris (comme le répertoire node_modules et de construire/bundle). Votre fichier d'index est rouge (pas blanc comme les fichiers archivés). Ainsi, lorsque vous
git push heroku master
, ces fichiers vous faites référence n'existent pas.Enfin, la raison ENOENT dit /app/build est juste parce que la racine de votre répertoire/home sur Heroku est /app. Ne jamais créer des applications qui sont enfermés dans un fichier absolu de la structure; il suffit d'utiliser des chemins relatifs (dans le cas contraire, votre application ne fonctionnera plus si vous même de les déplacer dans un autre répertoire sur votre machine locale).
même problème ici , plz ajouter ce commentaire répondre. cela peut utile
OriginalL'auteur hunterloftis
dist le dossier est ignoré. donc heroku retourne cette erreur.
Lorsque vous la liste de vos fichiers d'application dans heroku, vous pouvez voir qu'il est manquant.
Comment afficher la liste des dossiers/fichiers dans heroku
OriginalL'auteur jasharbn
Vérifier votre colis.fichier json
Vérifier votre server.js fichier
OriginalL'auteur Yakup Ad
Une fois que vous ajoutez le fichier statique emplacement avec:
Express regarde les fichiers relatifs à l'annuaire statique, de sorte que le nom du répertoire statique ne fait pas partie de l'URL. Vous devriez être en mesure de faire pour l'obtenir index.html:
Voir https://expressjs.com/en/starter/static-files.html
OriginalL'auteur David Thomas
J'ai eu le même problème où
Heroku open
conservés sur de se plaindre de manqueindex.html
à l'intérieur de/app
. Toutefois, il a été fonctionne bien localement"Heroku Local
'.Le problème est que j'avais explicitement ignoré compilé les fichiers/dossiers par exemple
/dist
dans legitignore
fichier et donc/dist
n'a jamais été poussé sur leheroku
déployé dossier.Faire,
et vous assurer que vous avez
dist folder (with compiled files)
énumérés ici et tout doit être beau.OriginalL'auteur immirza
Notez qu'il est préférable d'utiliser
heroku-postbuild
commande dans votre script plutôt que de les pousser à labuild
dossier.OriginalL'auteur user1449456