router.use TypeError:无法读取未定义的属性'use'

我是node.js的新手,请高手帮忙。 我在准备一个基于node.js + AWS Cognito + Facebooklogin的用户同步代码。 我从这个链接尝试了一个例子。

每一步都运行顺利,直到“facebook带护照”部分

var express = require('express'); var router = express.Router(); var passport = require('passport'); ... router.use(passport.initialize()); ... 

在这个例子中添加这个部分后,我运行“npm start”,出现如下错误:

 C:\workspace\nodejs\CognitoExample\routes\index.js:35 router.use(passport.initialize()); ^ TypeError: Cannot read property 'use' of undefined 

“不能读取财产”的含义是什么? 如何解决这个问题? 预先感谢。


在这里less有专家帮忙之后,我可以解决这个问题:

  • 重新安装快递

我昨天使用了npm install -g express-generator @ 3命令,所以它使我的全局设置expression了版本3.我首先卸载并安装express。

 npm uninstall -g express-generator@3 npm uninstall -g express npm install -g express npm install -g express-generator 
  • 删除本地node_modules

第1步之后,同样的问题仍然存在,我发现我之前安装Express 3.x本地工作文件夹,所以我创build一个新的工作文件夹,再次重新启动示例代码,问题已经消失

您正在遵循的教程是基于Express框架的4.x版本编写的。 与4.x版本相比,Express 4.x中的路由过程发生了重大变化 。 特别是,添加了express.Router()对象。 所以,或者您必须熟练掌握您的代码( 这可能对您有帮助),才能使其工作,或升级Express版本。

我遇到了类似的问题。 我在app.use(express.static...)之后放置了代码,它工作正常。