我是node.js的新手,专家,请帮忙。 我正准备基于node.js + AWS Cognito + Facebook Login进行用户同步的代码。我尝试了这个link的例子。
每一步都顺利进行,直到" facebook用护照和#34;节
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
&#34的含义是什么;无法读取属性"?如何解决问题? 提前谢谢。
经过几位专家的帮助,我可以解决问题:
我昨天使用了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
在第1步之后,同样的问题仍然存在,我发现我之前在本地工作文件夹中安装了快递3.x,所以我创建了一个新的工作文件夹,再次重启示例代码,问题就消失了
答案 0 :(得分:5)
您所遵循的教程是基于4.x版本的Express框架编写的。 Express 4.x中有significant changes regarding routing process,与3.x版本相比。特别是,添加了express.Router()
个对象。所以,或者您必须熟悉您的代码(this可能会帮助您),以使其工作,或升级Express版本。
答案 1 :(得分:0)
如果您使用的是 typescript和es6 导入,并遇到相同的问题。
使用:
import * as passport from "passport";
代替
import passport from "passport";
答案 2 :(得分:-1)
我遇到了类似的问题。我在app.use(express.static...)
之后放置了代码并且它有效。