2015-10-16 70 views
4

我是新來的node.js,請高手幫忙。 我正在準備基於node.js + AWS Cognito + Facebook登錄進行用戶同步的代碼。我試過link的一個例子。router.use TypeError:無法讀取未定義的屬性'use'

每一步運行平穩,直到部分

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

「臉譜與護照唱」在例如添加這一部分之後,我跑「故宮開始」,以下錯誤出現:

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

TypeError: Cannot read property 'use' of undefined 

「無法讀取屬性」的含義是什麼?如何解決這個問題? 提前致謝。


一些專家後在這裏幫助,我可以解決這個問題:

  • 重新安裝快車

我用NPM安裝-g表達發電機@昨天下午3命令,所以它使我的全球設置表達版本3.我首先卸載並安裝Express。

npm uninstall -g [email protected] 
npm uninstall -g express 
npm install -g express 
npm install -g express-generator 
  • 刪除本地node_modules

執行步驟1後,同樣的問題依然存在,我發現我在安裝之前本地工作文件夾快車3.x的,所以我創建了一個新的工作文件夾,重新啓動示例代碼,問題不存在

+0

replace var express = require('express');用var express = require('express')(); – Ben

+0

您使用什麼版本的Express? –

+0

thx爲您提供幫助,修改後需要('express')();錯誤消息移動到以下行,TypeError:express.Router不是函數 –

回答

5

您正在關注的教程是基於Express框架的4.x版本編寫的。在Express 4.x中製作了significant changes regarding routing process,與3.x版本相比。特別是,添加了express.Router()對象。所以,或者您必須熟練掌握您的代碼(this可能對您有幫助),才能使其工作或升級Express版本。

+0

這是一個很好的打擊,但不能完全解決我的問題。 –

+1

我修復了上一個問題,它來自本地node_modules。昨天,當我進行設置時,我將express 3.x安裝到本地工作文件夾中。在我重新創建示例工作文件夾之後,表達4現在運行良好。 謝謝大家。 –

+0

我有類似的問題;我在package.json中使用^ 3.0.0版本,因爲嘗試使用5.3.0會在嘗試運行npm install時導致錯誤。它說版本不匹配(存在!!瘋狂)。最後,我改爲4.16。0在package.json中,現在服務器正在運行。 – Pablo

-1

我遇到了類似的問題。我在app.use(express.static...)之後放置了代碼,它工作正常。

相關問題