尝试使用Express应用程序生成器向此Express应用程序添加新路由.这是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'); var routes = require('./routes/index'); var users = require('./routes/users'); var parse = require('./routes/parse'); var app = express(); // view engine setup 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'))); app.use('/',routes); app.use('/users',users); app.use('/parse',parse); // catch 404 and forward to error handler app.use(function(req,res,next) { var err = new Error('Not Found - from app.js'); err.status = 404; next(err); }); // error handlers // development error handler // will print stacktrace if (app.get('env') === 'development') { app.use(function(err,req,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,next) { res.status(err.status || 500); res.render('error',{ message: err.message,error: {} }); }); module.exports = app;
我添加的行是:
var parse = require('./routes/parse'); app.use('/parse',parse);
然后在/ routes目录中我添加了包含以下内容的parse.js:
var express = require('express'); var router = express.Router(); router.get('/parse',function(req,next) { res.send('return from parse.js'); }); module.exports = router;
我可以使用浏览器点击/和/ users资源,我得到了预期的结果.但是当我尝试点击/解析时,我得到这个404:
找不到 – 来自app.js
Error: Not Found - from app.js at /home/bitnami/parsecsvapi/app.js:32:13 at Layer.handle [as handle_request] (/home/bitnami/parsecsvapi/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:312:13) at /home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:280:7 at Function.process_params (/home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:330:12) at next (/home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:271:10) at /home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:618:15 at next (/home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:256:14) at Function.handle (/home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:176:3) at router (/home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:46:12)
解决方法
尝试/解析/解析URL
如果你想使用/ parse,请在/routes/parse.js中使用/而不是/ parse
请参考/routes/index.js> /routes/users.js.
TL; DR;
//app.js var parse = require('./routes/parse'); app.use('/parse',parse); var express = require('express'); var router = express.Router(); // routes/parse.js // the URL pattern will be used in conjunction with how its is being used // in this case it would be '/parse' (from app.js) + '/parse' (as used in the next line) // resulting in '/parse/parse' router.get('/parse',next) { res.send('return from parse.js'); }); module.exports = router;