簡體   English   中英

總是找不到404

[英]Always Getting Not Found 404

嗨,我的代碼如下

app.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

// Used to connect to the MongoDB database
var mongo = require('mongodb')


var routes = require('./routes/index');

var users = require('./routes/users');

var app = express();


// Define the directory with the views and to use Jade
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');


// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));


// Define what route files to use being routes/index.js for /
// routes/users.js for /users
// The route files then render the page
app.use('/', routes);
app.use('/users', users);
console.log("The Value of Appadadasd",""+ app);

// catch 404 and forward to error handler
app.use(function(req, res, next) {


  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});

module.exports = app;

這是我的index.js

var express = require('express');
var router = express.Router();
var mongodb = require('mongodb');



/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});


var MongoClient = mongodb.MongoClient;
var url = 'mongodb://localhost:27017/AddServer';

// Use connect method to connect to the Server
MongoClient.connect(url, function (err, db) {
  if (err) {
    console.log('Unable to connect to the mongoDB server. Error:', err);
  } else {
    //HURRAY!! We are connected. :)
    console.log('Connection established to', url);

    // Get the documents collection
    var collection = db.collection('users');

    //Create some users
    var user1 = {name: 'modulus admin', age: 42, roles: ['admin', 'moderator', 'user']};
    var user2 = {name: 'modulus user', age: 22, roles: ['user']};
    var user3 = {name: 'modulus super admin', age: 92, roles: ['super-admin', 'admin', 'moderator', 'user']};

    // Insert some users
    collection.insert([user1, user2, user3], function (err, result) {
      if (err) {
        console.log(err);
      } else {
        console.log('Inserted %d documents into the "users" collection. The documents inserted with "_id" are:', result.length, result);
      }
      //Close connection
      db.close();
    });
  }
});
module.exports = router;

和我的users.js

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/users', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

module.exports = router;

當我輸入http:// localhost:3000 /時,它工作正常,但是當我嘗試調用http:// localhost:3000 / users時,它給了我

未找到

404

Error: Not Found
    at D:\AddServer\AddServer\app.js:45:13
    at Layer.handle [as handle_request] (D:\AddServer\AddServer\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (D:\AddServer\AddServer\node_modules\express\lib\router\index.js:312:13)
    at D:\AddServer\AddServer\node_modules\express\lib\router\index.js:280:7
    at Function.process_params (D:\AddServer\AddServer\node_modules\express\lib\router\index.js:330:12)
    at next (D:\AddServer\AddServer\node_modules\express\lib\router\index.js:271:10)
    at D:\AddServer\AddServer\node_modules\express\lib\router\index.js:618:15
    at next (D:\AddServer\AddServer\node_modules\express\lib\router\index.js:256:14)
    at Function.handle (D:\AddServer\AddServer\node_modules\express\lib\router\index.js:176:3)
    at router (D:\AddServer\AddServer\node_modules\express\lib\router\index.js:46:12) 

它沒有路由到users.js我想我在犯一些愚蠢的錯誤,但是我是一個新節點,無法弄清楚。

您通過定義在/users處掛載users路由

app.use('/users', users);

但是,在users.js文件中,您僅定義了/users路由,該路由可由http://localhost:3000/users/users (由於安裝),而不能由http://localhost:3000/users

嘗試改變這種path從路徑/users/users.js

例如

router.get('/', function(req, res, next) {
   res.render('index', { title: 'Express' });
});

編輯

在討論了確切的要求之后,您可以進行以下更改以訪問http://localhost:3000/user

app.js

app.use('/user', users);

users.js

router.get('/', function(req, res, next) {
   res.render('index', { title: 'Express' });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM