Node.js 快速路由器不工作

Node.js 快速路由器不工作,node.js,express,Node.js,Express,我是新的表达和使用yo发电机来创建我的项目。我面临的问题是,以下路线: app.get('/something')工作正常,但是 路由器.get('/something')不工作。我试图研究,但没能解决这个问题。 这是我的档案: app.js var fs = require('fs'); var http = require('http'); var path = require('path'); var helmet = require('helmet'); var express = re

我是新的表达和使用yo发电机来创建我的项目。我面临的问题是,以下路线:

app.get('/something')工作正常,但是

路由器.get('/something')不工作。我试图研究,但没能解决这个问题。 这是我的档案:

app.js

var fs = require('fs');
var http = require('http');
var path = require('path');
var helmet = require('helmet');
var express = require('express');
var root = path.normalize(__dirname + '/');
var constant = require(root + '/app/util/constants.js');

var config = require(constant.APP_CONFIG_FILE);

var app = express();
app.use(helmet());

app.use(function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Headers", "DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type");
return next();
});

require('./config/express')(app, config);

http.createServer(app).listen(config.WEB_PORT, function() {
console.log('Server listening http on port ' + config.WEB_PORT);
});

module.exports = app;
var env = process.env.NODE_ENV || 'development';
app.locals.ENV = env;
app.locals.ENV_DEVELOPMENT = env == 'development';

app.set('views', config.ROOT + '/app/views');
app.set('view engine', 'ejs');

// app.use(favicon(config.root + '/public/img/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(cookieParser());
app.use(compress());
app.use(express.static(config.ROOT + '/public'));
app.use(methodOverride());

var controllers = glob.sync(config.ROOT + '/app/controllers/*.js');
controllers.forEach(function(controller) {
    require(controller)(app);
});

app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});
var path = require('path');
var express = require('express');

var router = express.Router();
var root = path.normalize(__dirname + '/../..');
var constant = require(root + '/app/util/constants.js');

var service = require(constant.USER_SERVICE_FILE);
var responseUtil = require(constant.RESPONSE_UTIL_FILE);

module.exports = function(app) {
app.use(constant.USER_PATH, router);   // constant.USER_PATH is '/user' (added after alexmac asked)

**// this works**
app.get('/test', function(req, res) {
    res.write('hello');
    res.end();
});

**// This doesn't work**
router.get('/test', function(req, res) {
    res.write('hello');
    res.end();
});

};


/* 
GET: /user
*/
router.route('/:page?/limit?/:limit')
.get(function(req, res) {
    responseUtil.sendResponse(service.allRecords(req, res), req, res);
});

/* 
POST: /user
*/
router.route('/')
.post(function(req, res) {
    responseUtil.sendResponse(service.saveRecord(req, res), req, res);
});

/* 
GET: /user/1
PUT: /user/1
DELETE: /user/1
*/
router.route('/:id')
.get(function(req, res) {
    responseUtil.sendResponse(service.findRecord(req, res), req, res);
})
.delete(function(req, res) {
    responseUtil.sendResponse(service.deleteRecord(req, res), req, res);
})
.put(function(req, res) {
    responseUtil.sendResponse(service.updateRecord(req, res), req, res);
});
express.js中的行

var fs = require('fs');
var http = require('http');
var path = require('path');
var helmet = require('helmet');
var express = require('express');
var root = path.normalize(__dirname + '/');
var constant = require(root + '/app/util/constants.js');

var config = require(constant.APP_CONFIG_FILE);

var app = express();
app.use(helmet());

app.use(function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Headers", "DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type");
return next();
});

require('./config/express')(app, config);

http.createServer(app).listen(config.WEB_PORT, function() {
console.log('Server listening http on port ' + config.WEB_PORT);
});

module.exports = app;
var env = process.env.NODE_ENV || 'development';
app.locals.ENV = env;
app.locals.ENV_DEVELOPMENT = env == 'development';

app.set('views', config.ROOT + '/app/views');
app.set('view engine', 'ejs');

// app.use(favicon(config.root + '/public/img/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(cookieParser());
app.use(compress());
app.use(express.static(config.ROOT + '/public'));
app.use(methodOverride());

var controllers = glob.sync(config.ROOT + '/app/controllers/*.js');
controllers.forEach(function(controller) {
    require(controller)(app);
});

app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});
var path = require('path');
var express = require('express');

var router = express.Router();
var root = path.normalize(__dirname + '/../..');
var constant = require(root + '/app/util/constants.js');

var service = require(constant.USER_SERVICE_FILE);
var responseUtil = require(constant.RESPONSE_UTIL_FILE);

module.exports = function(app) {
app.use(constant.USER_PATH, router);   // constant.USER_PATH is '/user' (added after alexmac asked)

**// this works**
app.get('/test', function(req, res) {
    res.write('hello');
    res.end();
});

**// This doesn't work**
router.get('/test', function(req, res) {
    res.write('hello');
    res.end();
});

};


/* 
GET: /user
*/
router.route('/:page?/limit?/:limit')
.get(function(req, res) {
    responseUtil.sendResponse(service.allRecords(req, res), req, res);
});

/* 
POST: /user
*/
router.route('/')
.post(function(req, res) {
    responseUtil.sendResponse(service.saveRecord(req, res), req, res);
});

/* 
GET: /user/1
PUT: /user/1
DELETE: /user/1
*/
router.route('/:id')
.get(function(req, res) {
    responseUtil.sendResponse(service.findRecord(req, res), req, res);
})
.delete(function(req, res) {
    responseUtil.sendResponse(service.deleteRecord(req, res), req, res);
})
.put(function(req, res) {
    responseUtil.sendResponse(service.updateRecord(req, res), req, res);
});
app/controllers/user ctrl.js

var fs = require('fs');
var http = require('http');
var path = require('path');
var helmet = require('helmet');
var express = require('express');
var root = path.normalize(__dirname + '/');
var constant = require(root + '/app/util/constants.js');

var config = require(constant.APP_CONFIG_FILE);

var app = express();
app.use(helmet());

app.use(function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Headers", "DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type");
return next();
});

require('./config/express')(app, config);

http.createServer(app).listen(config.WEB_PORT, function() {
console.log('Server listening http on port ' + config.WEB_PORT);
});

module.exports = app;
var env = process.env.NODE_ENV || 'development';
app.locals.ENV = env;
app.locals.ENV_DEVELOPMENT = env == 'development';

app.set('views', config.ROOT + '/app/views');
app.set('view engine', 'ejs');

// app.use(favicon(config.root + '/public/img/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(cookieParser());
app.use(compress());
app.use(express.static(config.ROOT + '/public'));
app.use(methodOverride());

var controllers = glob.sync(config.ROOT + '/app/controllers/*.js');
controllers.forEach(function(controller) {
    require(controller)(app);
});

app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});
var path = require('path');
var express = require('express');

var router = express.Router();
var root = path.normalize(__dirname + '/../..');
var constant = require(root + '/app/util/constants.js');

var service = require(constant.USER_SERVICE_FILE);
var responseUtil = require(constant.RESPONSE_UTIL_FILE);

module.exports = function(app) {
app.use(constant.USER_PATH, router);   // constant.USER_PATH is '/user' (added after alexmac asked)

**// this works**
app.get('/test', function(req, res) {
    res.write('hello');
    res.end();
});

**// This doesn't work**
router.get('/test', function(req, res) {
    res.write('hello');
    res.end();
});

};


/* 
GET: /user
*/
router.route('/:page?/limit?/:limit')
.get(function(req, res) {
    responseUtil.sendResponse(service.allRecords(req, res), req, res);
});

/* 
POST: /user
*/
router.route('/')
.post(function(req, res) {
    responseUtil.sendResponse(service.saveRecord(req, res), req, res);
});

/* 
GET: /user/1
PUT: /user/1
DELETE: /user/1
*/
router.route('/:id')
.get(function(req, res) {
    responseUtil.sendResponse(service.findRecord(req, res), req, res);
})
.delete(function(req, res) {
    responseUtil.sendResponse(service.deleteRecord(req, res), req, res);
})
.put(function(req, res) {
    responseUtil.sendResponse(service.updateRecord(req, res), req, res);
});

用这段代码更改您的代码

var express = require('express');
var bodyParser = require('body-parser');
var router = express.Router();
router.use(bodyParser.json());
var app = express();
router.get('/test', function(req, res) {
    res.write('hello');
    res.end();
});

app.use('/route',router);

module.exports = router;
当您想要获取时,请使用
http://localhost:port/route/test


希望这有帮助。

用这段代码更改您的代码

var express = require('express');
var bodyParser = require('body-parser');
var router = express.Router();
router.use(bodyParser.json());
var app = express();
router.get('/test', function(req, res) {
    res.write('hello');
    res.end();
});

app.use('/route',router);

module.exports = router;
当您想要获取时,请使用
http://localhost:port/route/test


希望这能有所帮助。

这些是关键。我改变了顺序,试图澄清意图,但这不应改变他们的行为:

// Create a route for GET /test
app.get('/test', function(req, res) {
    res.write('hello');
    res.end();
});

// Create a route for GET /user/test
router.get('/test', function(req, res) {
    res.write('hello');
    res.end();
});

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

路由器
安装在路径
/user
上,因此
路由器
上的任何路径都将与
/user
相关。换句话说,如果
app
正在
http://localhost/test
然后
路由器将处理
http://localhost/user/test

这些是关键的几行。我改变了顺序,试图澄清意图,但这不应改变他们的行为:

// Create a route for GET /test
app.get('/test', function(req, res) {
    res.write('hello');
    res.end();
});

// Create a route for GET /user/test
router.get('/test', function(req, res) {
    res.write('hello');
    res.end();
});

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

路由器
安装在路径
/user
上,因此
路由器
上的任何路径都将与
/user
相关。换句话说,如果
app
正在
http://localhost/test
然后
路由器将处理
http://localhost/user/test

什么是
常量。用户路径
?您需要使用此前缀创建路由器,因此路径不应为
/something
,而应为
/something
。对不起,我的错误,constant.USER\u path=>/userall,app.get('/test')可以工作,但router.get('/test')不能工作什么是
constant.USER\u path
?您需要使用此前缀创建路由器,因此路径不应为
/something
,而应为
/something
。对不起,我的错误,constant.USER\u path=>/userall,app.get('/test')可以工作,但router.get('/test')不能工作。我正在使用yo express generator创建express项目,我上面的代码来自控制器。实际上我正在使用yo express generator创建express项目,我上面的代码来自控制器。