node.js – Express JS 404错误中的新路由

前端之家收集整理的这篇文章主要介绍了node.js – Express JS 404错误中的新路由前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
尝试使用Express应用程序生成器向此Express应用程序添加新路由.这是app.js文件
  1. var express = require('express');
  2. var path = require('path');
  3. var favicon = require('serve-favicon');
  4. var logger = require('morgan');
  5. var cookieParser = require('cookie-parser');
  6. var bodyParser = require('body-parser');
  7.  
  8. var routes = require('./routes/index');
  9. var users = require('./routes/users');
  10. var parse = require('./routes/parse');
  11.  
  12. var app = express();
  13.  
  14. // view engine setup
  15. app.set('views',path.join(__dirname,'views'));
  16. app.set('view engine','jade');
  17.  
  18. // uncomment after placing your favicon in /public
  19. //app.use(favicon(path.join(__dirname,'public','favicon.ico')));
  20. app.use(logger('dev'));
  21. app.use(bodyParser.json());
  22. app.use(bodyParser.urlencoded({ extended: false }));
  23. app.use(cookieParser());
  24. app.use(express.static(path.join(__dirname,'public')));
  25.  
  26. app.use('/',routes);
  27. app.use('/users',users);
  28. app.use('/parse',parse);
  29.  
  30. // catch 404 and forward to error handler
  31. app.use(function(req,res,next) {
  32. var err = new Error('Not Found - from app.js');
  33. err.status = 404;
  34. next(err);
  35. });
  36.  
  37. // error handlers
  38.  
  39. // development error handler
  40. // will print stacktrace
  41. if (app.get('env') === 'development') {
  42. app.use(function(err,req,next) {
  43. res.status(err.status || 500);
  44. res.render('error',{
  45. message: err.message,error: err
  46. });
  47. });
  48. }
  49.  
  50. // production error handler
  51. // no stacktraces leaked to user
  52. app.use(function(err,next) {
  53. res.status(err.status || 500);
  54. res.render('error',{
  55. message: err.message,error: {}
  56. });
  57. });
  58.  
  59.  
  60. module.exports = app;

添加的行是:

  1. var parse = require('./routes/parse');
  2. app.use('/parse',parse);

然后在/ routes目录中我添加了包含以下内容的parse.js:

  1. var express = require('express');
  2. var router = express.Router();
  3.  
  4.  
  5. router.get('/parse',function(req,next) {
  6. res.send('return from parse.js');
  7. });
  8.  
  9. module.exports = router;

我可以使用浏览器点击/和/ users资源,我得到了预期的结果.但是当我尝试点击/解析时,我得到这个404

找不到 – 来自app.js

404

  1. Error: Not Found - from app.js
  2. at /home/bitnami/parsecsvapi/app.js:32:13
  3. at Layer.handle [as handle_request] (/home/bitnami/parsecsvapi/node_modules/express/lib/router/layer.js:95:5)
  4. at trim_prefix (/home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:312:13)
  5. at /home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:280:7
  6. at Function.process_params (/home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:330:12)
  7. at next (/home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:271:10)
  8. at /home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:618:15
  9. at next (/home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:256:14)
  10. at Function.handle (/home/bitnami/parsecsvapi/node_modules/express/lib/router/index.js:176:3)
  11. 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;

  1. //app.js
  2. var parse = require('./routes/parse');
  3. app.use('/parse',parse);
  4.  
  5. var express = require('express');
  6. var router = express.Router();
  7.  
  8. // routes/parse.js
  9. // the URL pattern will be used in conjunction with how its is being used
  10. // in this case it would be '/parse' (from app.js) + '/parse' (as used in the next line)
  11. // resulting in '/parse/parse'
  12. router.get('/parse',next) {
  13. res.send('return from parse.js');
  14. });
  15.  
  16. module.exports = router;

猜你在找的Node.js相关文章