app.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. var express = require('express');
  2. var path = require('path');
  3. var logger = require('morgan');
  4. var bodyParser = require('body-parser');
  5. var serveStatic = require('serve-static');
  6. var session = require('express-session');
  7. var cookieParser = require('cookie-parser');
  8. var app = express();
  9. // view engine setup
  10. //app.set('views', path.join(__dirname, 'views'));
  11. //app.set('view engine', 'jade');
  12. // uncomment after placing your favicon in /public
  13. //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
  14. app.disable('etag');
  15. app.use(logger('dev'));
  16. app.use(bodyParser.json());
  17. app.use(bodyParser.urlencoded({extended: false}));
  18. //app.use(express.static(path.join(__dirname, 'public')));
  19. //app.use(express.static(path.join(__dirname, 'node_modules')));
  20. app.use(serveStatic('bower_components'));
  21. app.use(cookieParser('fy_'));
  22. // =================================================================================
  23. //app api 接口服务
  24. //自动注册所有service为rpc服务
  25. var rpc = require('./lib/rpc');
  26. var dirWalk = require('./lib/myfs/digui');
  27. var _s = require('underscore.string');
  28. var serviceFileFolder = __dirname + '/service';
  29. var serviceFileList = dirWalk.syncWalk(serviceFileFolder, 0);
  30. console.info('需引入RPC注册的服务地址是: ');
  31. var rpcScripts = serviceFileList.map(function (o) {
  32. var service = require('.' + o.rpcPath);
  33. var ret = o.rpcPath.split('/');
  34. var clientName = _s.capitalize(ret[ret.length - 2]) + _s.capitalize(ret[ret.length - 1].replace('.js', ''));
  35. app.use(o.rpcPath, rpc(express, '/helper.js', clientName, service));
  36. var script = ['script(src=\'', o.rpcPath, '/helper.js', '\')\n',
  37. "script var ", clientName, " = new ", clientName, "('", o.rpcPath, "');\n"].join('');
  38. console.log(script);
  39. return script;
  40. });
  41. var fs = require('fs');
  42. var rpcJadePath = __dirname + '/views/include/rpc.jade';
  43. try{fs.unlinkSync(rpcJadePath);}catch(e){}
  44. fs.writeFile(rpcJadePath, rpcScripts.join('\n'), function (err, x) {
  45. });
  46. app.use(function (req, res, next) {
  47. var err = new Error('Not Found');
  48. err.status = 404;
  49. //next(err);
  50. res.render('404', {
  51. message: err.message,
  52. error: err
  53. });
  54. });
  55. if (app.get('env') === 'development') {
  56. app.use(function (err, req, res, next) {
  57. res.status(err.status || 500);
  58. console.log(err);
  59. res.render('500', {
  60. message: err.message,
  61. error: err
  62. });
  63. });
  64. }
  65. app.use(function (err, req, res, next) {
  66. res.status(err.status || 500);
  67. console.log(JSON.stringify(err));
  68. res.render('500', {
  69. message: err.message,
  70. error: {}
  71. });
  72. });
  73. module.exports = app;