简体   繁体   English

总是找不到404

[英]Always Getting Not Found 404

Hi I have following code in my 嗨,我的代码如下

app.js 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;

Here is my index.js 这是我的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;

and my users.js 和我的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;

When i type http://localhost:3000/ it working for perfectly but when i am trying to call http://localhost:3000/users its giving me 当我输入http:// localhost:3000 /时,它工作正常,但是当我尝试调用http:// localhost:3000 / users时,它给了我

Not Found 未找到

404 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) 

Its not routing to users.js I think i am doing some silly mistakes but i am new node not able to figure it out. 它没有路由到users.js我想我在犯一些愚蠢的错误,但是我是一个新节点,无法弄清楚。

You are mounting users routes at /users by defining 您通过定义在/users处挂载users路由

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

But, in your users.js file, you have defined only /users route, which is accessible by http://localhost:3000/users/users (because of mounting), not by http://localhost:3000/users 但是,在users.js文件中,您仅定义了/users路由,该路由可由http://localhost:3000/users/users (由于安装),而不能由http://localhost:3000/users

Try changing that path of the route from /users to / in users.js 尝试改变这种path从路径/users/users.js

eg 例如

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

Edit 编辑

After discussing the exact requirement, you can do the following changes to access http://localhost:3000/user 在讨论了确切的要求之后,您可以进行以下更改以访问http://localhost:3000/user

app.js app.js

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

users.js 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