【发布时间】:2019-10-01 17:48:58
【问题描述】:
我是 node.js 的新手,请高手帮忙。 我正在准备基于 node.js + AWS Cognito + Facebook Login 进行用户同步的代码。我尝试了来自 link 的示例。
每一步都很顺利,直到“facebook sing in with passport”部分
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
“无法读取属性”是什么意思?如何解决问题? 提前致谢。
经过几位专家的帮助,我可以解决问题:
- 重新安装 express
我昨天使用了 npm install -g express-generator@3 命令,所以它使我的全局设置为 express 版本 3。我先卸载并重新安装 express。
npm uninstall -g express-generator@3
npm uninstall -g express
npm install -g express
npm install -g express-generator
- 删除本地节点模块
在第1步之后,同样的问题依然存在,我发现我之前在本地工作文件夹中安装了express 3.x,所以我创建了一个新的工作文件夹,再次重新启动示例代码,问题就消失了
【问题讨论】:
-
替换 var express = require('express'); with var express = require('express')();
-
你用的是什么版本的 Express?
-
感谢您的帮助,修改为 require('express')();错误信息移到下面一行,TypeError: express.Router is not a function
-
express --version 显示 3.0.0
-
express.Router()是 Express 4.x 的东西。
标签: javascript node.js express router