Node.js Express应用程序。是否使用(';/route';)运行到其他路线?
在我的应用程序中,我有3条路线Node.js Express应用程序。是否使用(';/route';)运行到其他路线?,node.js,express,Node.js,Express,在我的应用程序中,我有3条路线 http://localhost:8080/search http://localhost:8080/user http://localhost:8080/shop 我在单独的文件server.js(终端中运行的文件)中写入路由: 在index.js中: app.use('/search', require('./searchRouter')(router)); app.use('/user', require('./user')(router
http://localhost:8080/search
http://localhost:8080/user
http://localhost:8080/shop
我在单独的文件server.js(终端中运行的文件)中写入路由:
在index.js中:
app.use('/search', require('./searchRouter')(router));
app.use('/user', require('./user')(router,io,mongoose,app,express));
app.use('/shop', require('./shop')(router,io,mongoose,app,express));
var
express = require('express'),
router = express.Router();
router.use('/search', require('./searchRouter'));
router.use('/user', require('./user'));
router.use('/shop', require('./shop'));
module.exports = router;
它们都有这样一条路线:
router.route('/')
.get(function(req, res) {
res.send('routerRestuarant');
})
.post(function(req, res) {
res.send('routerRestuarant');
})
.put(function(req,res){
res.json({
msg:"new shop.js router"
})
});
问题:
当我向路由“/shop”发送请求时,我发现响应来自“/search”,而没有响应来自“/shop”,如何修复它
关于传递mongoose、app、express变量
我的部分代码如下:
Index.js:
var express = require('express');
//var router = express.Router({ mergeParams: true });
var router = express.Router();
var routeInit = function (app,io,mongoose) {
//app.use('sessions', require('./sessions')(router));
app.use('/test', require('./searchRouter')(router));
app.use('/user', require('./user')(router,io,mongoose,app,express));
app.use('/shop', require('./shop')(router,io,mongoose,app,express));
return router;
};
module.exports = routeInit;
Shop.js:
var routeShop = function (router,io,mongoose,app,express) {
var Shop = require('../models/Shop')(mongoose);
router.route('/createDish')
.post(function(req, res) {
var dish = req.param('dish', null);
var shopName = req.param('shopName', null);
for (var i = 0; i < dish.length; i++) {
Shop.addDish(shopName, dish[i], function(err) {
if (null == err)
res.json({
code: 200
});
})
}
})
return router;
};
module.exports = routeShop;
试着这样做:
在server.js中:
// defining components to be accessible from route handlers
app.use(function(req, res, next) {
req.components = {
io: io,
mongo: mongoose
};
next();
});
app.use(require('./app/routes/index'));
在index.js中:
app.use('/search', require('./searchRouter')(router));
app.use('/user', require('./user')(router,io,mongoose,app,express));
app.use('/shop', require('./shop')(router,io,mongoose,app,express));
var
express = require('express'),
router = express.Router();
router.use('/search', require('./searchRouter'));
router.use('/user', require('./user'));
router.use('/shop', require('./shop'));
module.exports = router;
在路由器文件中:
var
express = require('express'),
router = express.Router();
router.get('/', function(req, res) {
req.components.io.emit('message', {data: "I'm in restaurant"});
res.send('routerRestuarant');
});
router.post('/', function(req, res) {
res.send('routerRestuarant');
})
router.put('/', function(req,res){
res.json({
msg:"new shop.js router"
});
});
module.exports = router;
您不需要将
mongoose、app、express
变量传递给其他模块。Node.js缓存加载的模块,您可以一次又一次地引用而无需通过。我有与mongoose、app等相关的代码,如果我不通过它们,我将得到编译器错误。您不能有编译器错误,它正在解释@MukeshSharma是对的,您不需要传递express、app和mongoose,它们是缓存的,可以作为var mongoose=require('mongoose')使用*请注意,如果您使用mongoose进行连接,它会在您确实需要mongoose的其他文件中保持连接。我认为我不能清楚地表达这一点是我的错。我正在尝试给出一些代码和屏幕快照我已经编辑了我的问题并发布了编译器错误,我是node的新手,所以我不知道为什么会发生这种情况:(我按照您的说明操作,但在index.js:throw new error(msg);^error:Router.use()需要回调函数,但得到了一个[object object]错误行是:Router.use('/search',require('/searchRouter'));我给了您一部分代码,在需要时使用module.export。您是新的,但不是子代码,我不想牵着手,然后遍历NodeSys,我正确地遵循您的代码,现在没有编译器错误,但现在服务器没有响应,我将尝试找出它。谢谢您更新了我的答案,添加:module.exports=router;in fil是的,因为如果您确实需要的话,这是nodejs中的必要时刻,所以如果您想从调用文件中使用它,您必须以某种方式返回它。如果您有异常,请通知我。今天我很亲切(: