NodeJS w/Express d'Erreur: Impossible d'OBTENIR /
C'est ce que j'ai, le nom de fichier "default.htm" existe réellement et charges lorsque l'on fait un readFile avec NodeJS.
var express = require('express');
var app = express();
app.use(express.static(__dirname + '/default.htm'));
app.listen(process.env.PORT);
L'Erreur (dans le navigateur):
Cannot GET /
- Les réponses aident à vous, ou avez-vous résolu votre problème d'une autre façon? Merci de partager..
Vous devez vous connecter pour publier un commentaire.
Vous souhaitez généralement de rendre les modèles comme ceci:
Cependant, vous pouvez également fournir un contenu statique à faire usage:
Maintenant, tout dans la
/public
répertoire de votre projet sera livré sous forme de contenu statique à la racine de votre site par exemple, si vous placezdefault.htm
dans le dossier public si sera disponible en visitant/default.htm
Prendre un coup d'oeil par le biais de la express API et Connectez Statique middleware docs pour plus d'info.
Vous devez définir une racine route.
Oh, et vous ne pouvez pas spécifier un fichier à l'intérieur de la
express.static
. Il doit être un répertoire. Leapp.get('/'....
sera chargé de rendre ce fichier en conséquence. Vous pouvez utiliser l'express " méthode render, mais vous allez avoir à ajouter des options de configuration qui dira express où vos points de vue sont, traditionnellement, dans laapp/views/
dossier.J'ai eu le même problème, voici ce que je suis venu avec. C'est ce que mon dossier structure ressemblait quand j'ai couru
node server.js
Après l'impression de l'
__dirname
chemin, j'ai réalisé que la__dirname
chemin où mon serveur est en cours d'exécution (app/
).Donc, la réponse à votre question est: est-ce
Si votre
server.js
fichier est dans le même dossier que les fichiers que vous essayez de rendre, puisdevrait en fait être
Le seul moment où vous pouvez utiliser la syntaxe d'origine que vous avez eu serait si vous aviez un dossier de l'arborescence comme ceci:
où
index.html
est dans leapp/
répertoire, alors queserver.js
est dans le répertoire racine (c'est à dire au même niveau que leapp/
répertoire).Dans l'ensemble, votre code pourrait ressembler à:
Je me suis retrouvé sur cette page, comme je l'ai été aussi la réception de la
Cannot GET/
message. Ma situation différait que j'ai été en utilisantexpress.static()
pour cible un dossier, comme cela a été proposé en réponse à la question précédente, et non pas un fichier que l'OP a été.Ce que j'ai découvert après quelques creuser par le biais de Express' docs est que
express.static()
définit son fichier d'index commeindex.html
, alors que mon fichier a été nomméindex.htm
.Pour faire le lien à l'OP de la question, il y a deux options:
1: Utiliser le code suggéré dans d'autres réponses
et puis renommez
default.htm
fichier àindex.html
ou
2: Ajouter le
index
de propriété lors de l'appel deexpress.static()
pour le diriger vers la désirée fichier d'index:Où est votre méthode get pour "/"?
Aussi, vous ne pouvez pas servir statique html directement dans l'Express.Vous devez d'abord le configurer.
Maintenant ajouter votre méthode get.
J'ai remarqué que j'ai oublié le "slash" dans le début de l'Itinéraire que ci-dessous
et j'étais même erreur :
Mal :
Correct :
J'ai eu le même problème. Résolu grâce à de petits changements, comme ci-dessous.
Obtenu l'aide de ici (ExpressJS Documentation - Servir les fichiers statiques).
Changement
app.use(express.static(__dirname + '/default.htm'));
àapp.use(express.static(path.join(__dirname + '/default.htm')));
.Aussi, assurez-vous de pointer vers le chemin droit de vous default.html.
Dans mon cas, le contenu statique est déjà desservie:
...et tout dans l'app semblait compter sur qui d'une certaine façon. (
path
dep estrequire('path')
)Donc, a) oui, il peut être un fichier; et b) vous pouvez faire une redirection!
Maintenant quelqu'un frapper
/
obtient/index.html
qui est servi de manière statique de../pub/index.html
.Espère que cela aide quelqu'un d'autre.
J'ai été confrontée au même problème que mentionné dans la question. Les étapes suivantes résolu mon problème.
J'ai mis à jour le nodejs package lien avec les étapes suivantes
Clair MNP cache:
Installer un peu d'aide appelée 'n'
Puis je suis allé à node.js site web, téléchargé la dernière node js package installé, et mon problème a été résolu.
Vous devez redémarrer le processus si
app.get
pas de travail. Appuyez surctl+c
et puisrestart
nœud de l'application.