Javascript 使用带有Express和Node.js的路由器

Javascript 使用带有Express和Node.js的路由器,javascript,node.js,Javascript,Node.js,我是Node.js的新手。我从示例中提取了一些代码,但不知何故我破坏了一些东西:) 此时,在我的app.js文件中,我有一行代码,我认为它将Express与Node.js连接起来。这条线是这样的: app.js var routes = require('./routes/index'); // ... app.get('/', routes.router); var express = require('express'); var router = express.Router(); /

我是Node.js的新手。我从示例中提取了一些代码,但不知何故我破坏了一些东西:)

此时,在我的app.js文件中,我有一行代码,我认为它将Express与Node.js连接起来。这条线是这样的:


app.js

var routes = require('./routes/index');
// ...
app.get('/', routes.router);
var express = require('express');
var router = express.Router();

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router;
var routes = require('./routes/index');
//var routes = require('./routes') --> this works 
// ...
app.use('/', routes); //Using the router instance as a middleware , relative to '/'
var express = require('express');
var router = express.Router(); // new instance of Router

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router; // You export the intance
var routes = require('./routes')
app
 .use("/user",routes.user)
 .use("/other",routes.other)
module.exports = {
  user : require(./user),
  other : require(./other)
}
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /user
})
.post("/",function (req,res){
  //POST /user
})

module.exports = router;
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /other
})
.post("/",function (req,res){
  //POST /other
})

module.exports = router;
然后,在./routes/index.js中,我有以下内容:

routes/index.js

var routes = require('./routes/index');
// ...
app.get('/', routes.router);
var express = require('express');
var router = express.Router();

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router;
var routes = require('./routes/index');
//var routes = require('./routes') --> this works 
// ...
app.use('/', routes); //Using the router instance as a middleware , relative to '/'
var express = require('express');
var router = express.Router(); // new instance of Router

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router; // You export the intance
var routes = require('./routes')
app
 .use("/user",routes.user)
 .use("/other",routes.other)
module.exports = {
  user : require(./user),
  other : require(./other)
}
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /user
})
.post("/",function (req,res){
  //POST /user
})

module.exports = router;
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /other
})
.post("/",function (req,res){
  //POST /other
})

module.exports = router;
当我运行此操作时,会出现以下错误:

Error: Route.get() requires callback functions but got a [object Undefined]
    at Route.(anonymous function) [as get]
我不明白。我做错了什么


谢谢

基本server.js的示例:

var express = require('express');
var app = express();

app.get('/', function(req, res) {
    res.sendfile(__dirname + '/client/views/index.html');
});

app.listen(3000, function() {
    console.log('Server running on localhost:3000');
});
相比较而言,我认为你需要听端口。另外,我认为你的res.send应该发送一个实际的文件

有关NodeJ的更多文档,请参见:

还发现了与此相关的问题:
app.js

var routes = require('./routes/index');
// ...
app.get('/', routes.router);
var express = require('express');
var router = express.Router();

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router;
var routes = require('./routes/index');
//var routes = require('./routes') --> this works 
// ...
app.use('/', routes); //Using the router instance as a middleware , relative to '/'
var express = require('express');
var router = express.Router(); // new instance of Router

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router; // You export the intance
var routes = require('./routes')
app
 .use("/user",routes.user)
 .use("/other",routes.other)
module.exports = {
  user : require(./user),
  other : require(./other)
}
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /user
})
.post("/",function (req,res){
  //POST /user
})

module.exports = router;
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /other
})
.post("/",function (req,res){
  //POST /other
})

module.exports = router;
routes/index.js

var routes = require('./routes/index');
// ...
app.get('/', routes.router);
var express = require('express');
var router = express.Router();

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router;
var routes = require('./routes/index');
//var routes = require('./routes') --> this works 
// ...
app.use('/', routes); //Using the router instance as a middleware , relative to '/'
var express = require('express');
var router = express.Router(); // new instance of Router

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router; // You export the intance
var routes = require('./routes')
app
 .use("/user",routes.user)
 .use("/other",routes.other)
module.exports = {
  user : require(./user),
  other : require(./other)
}
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /user
})
.post("/",function (req,res){
  //POST /user
})

module.exports = router;
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /other
})
.post("/",function (req,res){
  //POST /other
})

module.exports = router;
更新 如果需要多个路由文件


app.js

var routes = require('./routes/index');
// ...
app.get('/', routes.router);
var express = require('express');
var router = express.Router();

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router;
var routes = require('./routes/index');
//var routes = require('./routes') --> this works 
// ...
app.use('/', routes); //Using the router instance as a middleware , relative to '/'
var express = require('express');
var router = express.Router(); // new instance of Router

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router; // You export the intance
var routes = require('./routes')
app
 .use("/user",routes.user)
 .use("/other",routes.other)
module.exports = {
  user : require(./user),
  other : require(./other)
}
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /user
})
.post("/",function (req,res){
  //POST /user
})

module.exports = router;
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /other
})
.post("/",function (req,res){
  //POST /other
})

module.exports = router;
routes/index.js

var routes = require('./routes/index');
// ...
app.get('/', routes.router);
var express = require('express');
var router = express.Router();

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router;
var routes = require('./routes/index');
//var routes = require('./routes') --> this works 
// ...
app.use('/', routes); //Using the router instance as a middleware , relative to '/'
var express = require('express');
var router = express.Router(); // new instance of Router

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router; // You export the intance
var routes = require('./routes')
app
 .use("/user",routes.user)
 .use("/other",routes.other)
module.exports = {
  user : require(./user),
  other : require(./other)
}
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /user
})
.post("/",function (req,res){
  //POST /user
})

module.exports = router;
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /other
})
.post("/",function (req,res){
  //POST /other
})

module.exports = router;
路由/user.js

var routes = require('./routes/index');
// ...
app.get('/', routes.router);
var express = require('express');
var router = express.Router();

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router;
var routes = require('./routes/index');
//var routes = require('./routes') --> this works 
// ...
app.use('/', routes); //Using the router instance as a middleware , relative to '/'
var express = require('express');
var router = express.Router(); // new instance of Router

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router; // You export the intance
var routes = require('./routes')
app
 .use("/user",routes.user)
 .use("/other",routes.other)
module.exports = {
  user : require(./user),
  other : require(./other)
}
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /user
})
.post("/",function (req,res){
  //POST /user
})

module.exports = router;
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /other
})
.post("/",function (req,res){
  //POST /other
})

module.exports = router;
routes/other.js

var routes = require('./routes/index');
// ...
app.get('/', routes.router);
var express = require('express');
var router = express.Router();

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router;
var routes = require('./routes/index');
//var routes = require('./routes') --> this works 
// ...
app.use('/', routes); //Using the router instance as a middleware , relative to '/'
var express = require('express');
var router = express.Router(); // new instance of Router

/* GET home page */
router.get('/', function(req, res) {
    res.send('respond with a resource');
});
module.exports = router; // You export the intance
var routes = require('./routes')
app
 .use("/user",routes.user)
 .use("/other",routes.other)
module.exports = {
  user : require(./user),
  other : require(./other)
}
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /user
})
.post("/",function (req,res){
  //POST /user
})

module.exports = router;
var router = require("express").Router()

router.get("/",function (req,res){
  // GET /other
})
.post("/",function (req,res){
  //POST /other
})

module.exports = router;

可以有两个路由文件吗?例如
routes/users.js
routes/orders.js
users.js
文件中的路由将具有以
/users
开头的路由,
orders.js
中的路由将具有以
/users/{userId}/orders
开头的路由。这可能吗?当然,这是个好主意,你可以得到不同的路线,去编辑我的答案。