Não é possível obter o erro / Nodejs

estou a usar o tutorial encontrado aqui: http://addyosmani.github.io/backbone-fundamentals/#create-a-simple-web-server e acrescentou o seguinte código.

// Module dependencies.
var application_root = __dirname,
express = require( 'express' ), //Web framework
path = require( 'path' ), //Utilities for dealing with file paths
mongoose = require( 'mongoose' ); //MongoDB integration

//Create server
var app = express();

// Configure server
app.configure( function() {
//parses request body and populates request.body
app.use( express.bodyParser() );

//checks request.body for HTTP method overrides
app.use( express.methodOverride() );

//perform route lookup based on url and HTTP method
app.use( app.router );

//Where to serve static content
app.use( express.static( path.join( application_root, 'site') ) );

//Show all errors in development
app.use( express.errorHandler({ dumpExceptions: true, showStack: true }));
});

//Start server
var port = 5000;
app.listen( port, function() {
console.log( 'Express server listening on port %d in %s mode', port, app.settings.env );
});

Depois de iniciar o servidor com node server.js estou a ter um erro a dizer Cannot GET / quando acedi a localhost:5000 E pergunto-me se alguém sabia muito sobre este erro como o Express e o Node são novos para mim?

Author: Jonathan Miles, 2014-01-23

3 answers

Acho que está a perder as suas rotas, precisa de definir pelo menos uma rota, por exemplo '/' para indexar.

Por exemplo

app.get('/', function (req, res) {
  res.render('index', {});
});
 14
Author: Jonathan Miles, 2014-09-16 10:18:17
Já verificou a sua estrutura de pastas? Parece-me que o Express não consegue encontrar o seu directório raiz, que deve ser uma pasta chamada "site" mesmo debaixo do seu directório predefinido. Aqui está como deve ser, de acordo com o tutorial:
node_modules/
  .bin/
  express/
  mongoose/
  path/
site/
  css/
  img/
  js/
  index.html
package.json

Por exemplo na minha máquina, comecei a ter o mesmo erro que tu quando renomeei a minha pasta "site" como outra coisa. Sugiro que verifique se tem o índice.página html dentro de uma pasta" site " que fica no mesmo caminho como seu servidor.ficheiro js.

Espero que isso ajude!
 4
Author: leonardocsouza, 2014-01-23 20:07:13
Tal como leonardocsouza, tive o mesmo problema. Para esclarecer um pouco, este é o que minha estrutura de pastas parecia quando eu corri node server.js
node_modules/
app/
  index.html
  server.js

Depois de imprimir o caminho __dirname, percebi que o caminho __dirname era onde o meu servidor estava a correr (app/).

Então, a resposta à tua pergunta é a seguinte:

Se o seu ficheiro server.js estiver na mesma pasta que os ficheiros que está a tentar desenhar, então

app.use( express.static( path.join( application_root, 'site') ) );

Deve ser realmente

app.use(express.static(application_root));

O único tempo que você gostaria de usar a sintaxe original que você tinha seria se você tivesse uma árvore de pastas como assim:

app/
  index.html
node_modules
server.js

Onde index.html está na pasta app/, enquanto server.js está na pasta raiz (ou seja, o mesmo nível que a pasta app/).

Nota lateral: em vez de chamar o utilitário path, pode usar a sintaxe application_root + 'site' para se juntar a um caminho.

Globalmente, o seu código pode parecer:

// Module dependencies.
var application_root = __dirname,
express = require( 'express' ), //Web framework
mongoose = require( 'mongoose' ); //MongoDB integration

//Create server
var app = express();

// Configure server
app.configure( function() {

    //Don't change anything here...

    //Where to serve static content
    app.use( express.static( application_root ) );

    //Nothing changes here either...
});

//Start server --- No changes made here
var port = 5000;
app.listen( port, function() {
    console.log( 'Express server listening on port %d in %s mode', port, app.settings.env );
});
 2
Author: CopyLeft, 2016-05-21 19:46:57