router.use TypeError:无法读取undefined的属性'use'

Edw*_*ang 4 javascript router node.js express

我是node.js的新手,专家,请​​帮忙.我正在准备基于node.js + AWS Cognito + Facebook Login进行用户同步的代码.我从这个链接尝试了一个例子.

每一步都顺利进行,直到"facebook与护照一起唱歌"部分

var express = require('express');
var router = express.Router();
var passport = require('passport');
...
router.use(passport.initialize());
...
Run Code Online (Sandbox Code Playgroud)

在示例中添加此部分后,我运行"npm start",出现以下错误:

C:\workspace\nodejs\CognitoExample\routes\index.js:35
router.use(passport.initialize());
      ^

TypeError: Cannot read property 'use' of undefined
Run Code Online (Sandbox Code Playgroud)

"看不懂财产"是什么意思?如何解决问题?预先感谢.


经过几位专家的帮助,我可以解决问题:

  • 重新安装快递

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

npm uninstall -g express-generator@3
npm uninstall -g express
npm install -g express
npm install -g express-generator
Run Code Online (Sandbox Code Playgroud)
  • 删除本地node_modules

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

Ale*_*rev 5

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