2017-09-08 9 views
0

私は、自分のプロジェクトを作成するために、yo-generatorを使用しています。Expressルータが動作しない

app.get( '/何か')が正常に動作しているが、

router.get( '/何か')が働いていない:私が直面してる問題が持つ路線ということです。私は研究しようとしましたが、問題を解決できませんでした。ここ は私のファイルは、以下のとおりです。

app.js express.js

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); 
}); 

アプリ/コントローラ/ユーザー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 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); 
}); 
あなたはこのことができます http://localhost:port/route/test

希望を使い取得したい場合は

+1

「定数.USER_PATH」とは何ですか?この接頭辞を持つ作成されたルータが必要なので、パスは '/ something'ではなく' /something'でなければなりません。 – alexmac

+0

申し訳ありません、私の間違い、定数.USER_PATH =>/user – Ashutosh

+0

また、app.get( '/ test')は動作しますが、router.get( '/ test')が機能していません – Ashutosh

答えて

1

これらはキーラインです。私は意図を明確化しようとする順序を変更しましたが、それは、彼らがどのように動作するかを変更しないでください。

// 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); 

routerはそうrouter上の任意のパスは/userからの相対になりますパス/userに搭載されています。つまり、apphttp://localhost/testでの要求を処理している場合、routerhttp://localhost/user/testを処理します。

0
はコード

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; 

のこの作品であなたのコードを変更し

+0

実際には、エクスプレスプロジェクト、コントローラから私の上記のコード。 – Ashutosh

関連する問題