如何设置与主文件分开的快递路线?

我想按照下面的文件结构来分离我的rputes从主app.js我已经尝试过的api/user/后api返回404,任何想法如何通过使用下面的文件结构来解决这个问题?

./app.js

 var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var db = require('./config/db'); var port = process.env.PORT || 8080; app.use(require('./app/routes')); app.use(bodyParser.json({ type: 'application/vnd.api+json' })); app.use(bodyParser.urlencoded({ extended: true })); app.use(methodOverride('X-HTTP-Method-Override')); app.use(express.static(__dirname + '/public')); function startServer() { server.listen(port, function() { console.log('Express server listening on %d, in %s mode', port, app.get('env')); }); } setImmediate(startServer); // expose app exports = module.exports = app; 

./app/routes.js

 module.exports = function(app) { app.use('/api/user', require('./api/user')); app.route('*') .get(function(req, res) { // res.sendFile('./public/views/index.html'); res.sendfile('./public/views/index.html'); }); }; 

./app/api/user/index.js

 var express = require('express'); var controller = require('./user.controller'); var router = express.Router(); router.get('/', controller.index); router.post('/',controller.create); module.exports = router; 

错误

 angular.js: 12410 POST http: //localhost:8080/api/user 404 (Not Found) (anonymous) @ angular.js: 12410 p @ angular.js: 12155(anonymous) @ angular.js: 11908(anonymous) @ angular.js: 16648 $eval @ angular.js: 17972 $digest @ angular.js: 17786 $apply @ angular.js: 18080(anonymous) @ angular.js: 26749 cg @ angular.js: 3613 d @ angular.js: 3601 angular.js: 14328 Possibly unhandled rejection: { "data": "Cannot POST /api/user\n", "status": 404, "config": { "method": "POST", "transformRequest": [null], "transformResponse": [null], "jsonpCallbackParam": "callback", "url": "/api/user", "data": { "firstName": "John", "lastName": "Zhang" }, "headers": { "Accept": "application/json, text/plain, */*", "Content-Type": "application/json;charset=utf-8" } }, "statusText": "Not Found" } 

这样,你已经在index.js定义了路由,并且在routes.js安装了routes.js ,它会为/api/user提供404 ,因为当它在index.jssearch/时,它只find/api/users /api/user/api/users

您可以尝试将user路由器挂载到/api/user并可以在index.js定义/路由

./app/api/user/index.js

 var express = require('express'); var controller = require('./user.controller'); var router = express.Router(); //GET /api/user router.get('/', controller.index); //POST /api/user router.post('/',controller.create); module.exports = router; 

./app/routes.js

 module.exports = function(app) { //ANY /api/* app.use('/api/user', require('./api/user')); app.route('*') .get(function(req, res) { // res.sendFile('./public/views/index.html'); res.sendfile('./public/views/index.html'); }); }; 

希望它可以帮助你。

更新

你的代码中有另一个问题。 在你的app.js中 ,你定义了app.use(require('./app/routes'));routes.jsfunction(app)

将该行更改为

 require('./app/routes')(app); 

并在app.use(express.static(__dirname + '/public'));

您的问题涉及您的需求/import。首先尝试访问您的app.js文件中的正常路线