web-dev-qa-db-fra.com

"Ne peut pas obtenir /" avec se connecter sur Node.js

J'essaie de commencer à servir des pages Web statiques en utilisant connect comme ceci:

var connect = require("connect");
var nowjs = require("now");
var io = require("socket.io");


var app = connect.createServer(
  connect.static(__dirname + '/public')
);

app.listen(8180);

J'ai donc ajouté un simple index.html au répertoire /public du même répertoire que le fichier app.js, mais lorsque j'essaie d'afficher la page de mon navigateur, j'obtiens cette réponse du noeud:

Ne peut pas obtenir /

Qu'est-ce que je fais mal et comment je peux le corriger?

43
Nathan Campos

Ce code devrait fonctionner:

var connect = require("connect");

var app = connect.createServer().use(connect.static(__dirname + '/public'));

app.listen(8180);

Egalement dans la méthode connect 2.0 .createServer (), obsolète. Utilisez connect () à la place.

var connect = require("connect");

var app = connect().use(connect.static(__dirname + '/public'));

app.listen(8180);
14
Vadim Baryshev

Vous êtes peut-être ici parce que vous lisez le livre Apress PRO AngularJS ...

Comme décrit dans un commentaire de cette question de KnarfaLingus:

[COMMENCER LE DEVIS]

Le module de connexion a été réorganisé. faire:

npm install connect 

et aussi 

npm install serve-static

Ensuite, votre server.js peut être écrit comme suit:

var connect = require('connect');
var serveStatic = require('serve-static'); 
var app = connect(); 

app.use(serveStatic('../angularjs')); 

app.listen(5000);

[DEVIS FIN]

Bien que je le fasse, comme le livre le suggère, de manière plus concise,

var connect = require('connect');
var serveStatic = require('serve-static');

connect().use(
    serveStatic("../angularjs")
).listen(5000);
24
Serj Sagan

Le message Cannot GET / apparaît si vous ne spécifiez pas la page à essayer, autrement dit si votre URL ressemble à http://localhost:8180. Assurez-vous de saisir un nom de page, par exemple http://localhost:8180/index.html.

15
Stuart Hallows

Avait le même problème. Il a été résolu comme décrit ci-dessus. 

Dans mon index.js

var port = 1338,
express = require('express'),
app = express().use(express.static(__dirname + '/')),
http = require('http').Server(app),
io = require('socket.io')(http);

app.get('/', function(req, res){
    res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
    console.log('a user connected');
});

http.listen(port, function(){
    console.log("Node server listening on port " + port);
});

et dans mon index.html

<!doctype html>
<html>
    <head>
        <title>
            My page
        </title>
    </head>
    <body>
        <script src = "lib/socket.io.js"></script>
        <script src = "lib/three.js"></script>
        <script>
            var socket = io();
        </script>
    </body>
</html>

le three.js était juste là pour le test de trajectoire. Cela définira tous les fichiers enfants pour qu'ils démarrent au répertoire racine de votre application. Socket.io.js peut aussi être appelé automatiquement en utilisant <script src = "/socket.io/socket.io.js"> par magie noire (puisqu'il existe physiquement un noeud node_modules et un répertoire lib) 

2
GP Van Eron
var connect = require('connect');
var serveStatic = require('serve-static');
var app = connect(); 
app.use(serveStatic('../angularjs'),  {default: 'angular.min.js'}); app.listen(3000); 
1
prashantsahni

Vous voudrez peut-être aussi essayerst, un module de nœud permettant de servir des fichiers statiques. L'installation est triviale.

npm install connect

npm install st

Et voici à quoi ressemble mon fichier server-dev.js:

var connect = require('connect');
var http = require('http');
var st = require('st');

var app = connect()
    .use(st('app/dev'));

http.createServer(app).listen(8000);

ou (avec cache désactivé):

var connect = require('connect');
var http = require('http');
var st = require('st');

var app = connect();

var mount = st({
  path: 'app/dev',
  cache: false
});

http.createServer(function (req, res) {
  if (mount(req, res)) return;
}).listen(8000);

app.use(mount);
1
Wojciech Fornal

Le moyen le plus simple de servir des fichiers statiques est d'utiliser "harp". Il peut être trouvé ici. Vous pouvez servir vos fichiers depuis l’emplacement de votre choix via le noeud est:

var harp = require("harp")
harp.server(projectPath [,args] [,callback])

J'espère que cela t'aides.

0
Sesha Kiran

Vous aurez peut-être besoin de restart le processus si app.getnot fonctionne. Appuyez sur ctl+c puis sur restart node app.

0
Ashwani Panwar