为什么express.Router()不起作用?

时间:2018-07-21 20:39:52

标签: node.js express

我尝试测试示例代码bird.js(https://expressjs.com/en/guide/routing.html)。基本上,如下所示。

var express = require('express')
var router = express.Router()

router.use(function timeLog (req, res, next) {
  console.log('Time: ', Date.now())
  next()
})

但是当我运行它时。

node bird.js

我收到此错误。

TypeError: Cannot read property 'use' of undefined

顺便说一句,已安装“ express”。

其他信息     “ express”:“ 3.2.x”,

TypeError: Cannot read property 'use' of undefined
    at Object.<anonymous> (../route/bird.js:5:7)
    at Module._compile (module.js:410:26)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Function.Module.runMain (module.js:442:10)
    at startup (node.js:136:18)
    at node.js:966:3

bird.js是我运行的全部内容。

var express = require('express')
var router = express.Router()

// middleware that is specific to this router
router.use(function timeLog (req, res, next) {
  console.log('Time: ', Date.now())
  next()
})
// define the home page route
router.get('/', function (req, res) {
  res.send('Birds home page')
})
// define the about route
router.get('/about', function (req, res) {
  res.send('About birds')
})

module.exports = router

3 个答案:

答案 0 :(得分:1)

问题是您使用的是过时的Express版本。您所指的文档是用于快递4.x.x,并且您正在使用3.x.x

将您的快速版本更新为最新版本,您的代码即可正常工作。

npm install express@latest

将您的快速版本更新为:4.16.3

答案 1 :(得分:0)

您应该尝试这种方式。

router.use('/',timeLog, function(req, res, next) {
    console.log('Time: ', Date.now())
    next()
})

希望它会有所帮助。

答案 2 :(得分:0)

您需要通过调用const app = express()来实例化express的服务器实例。然后,您可以将bird.js导入app.js并运行node app.js

参见下图: enter image description here