2013-02-01 29 views
1

我正在使用Mocha框架和SuperAgent模塊測試服務器(不是我自己完成的),但是我需要測試服務器Ouath協議。 我找到superagent-oauth模塊以發出簽名請求。如何在node.js中要求插件模塊?

然而,當我需要的模塊,我收到以下錯誤

TypeError: Object.keys called on non-object

我的代碼,遵循在SuperAgent的-的OAuth回購自述文件,並運行時,它是

var superagent = require('superagent'); 
var log = require('./log.js'); 
var Oauth = require('node-oauth'); 
var oauth = new Oauth({..}); 

require('superagent-oauth')(superagent); 

然後測試我得到了在非對象上調用的TypeError:Object.keys。

當將SuperAgent我只是做

var superagent = require('superagent'); 
agent = superagent.agent(); 

但我不知道如何使用/需要的SuperAgent-OAuth的模塊。那麼正確的做法是什麼? 謝謝

添加跟蹤

2) Login 'Username:Password' test: POST with a valid login logins into the AM with a valid login: TypeError: Object.keys called on non-object at Function.keys (native) at Request.query (/home/maldo/testingAM/node_modules/superagent-oauth/superagent-oauth.js:22:23) at Context. (/home/maldo/testingAM/loginUserPass.js:74:6) at Test.Runnable.run (/home/maldo/node_modules/mocha/lib/runnable.js:196:15) at Runner.runTest (/home/maldo/node_modules/mocha/lib/runner.js:343:10) at Runner.runTests.next (/home/maldo/node_modules/mocha/lib/runner.js:389:12) at next (/home/maldo/node_modules/mocha/lib/runner.js:269:14) at Runner.hooks (/home/maldo/node_modules/mocha/lib/runner.js:278:7) at next (/home/maldo/node_modules/mocha/lib/runner.js:226:23) at Runner.hook (/home/maldo/node_modules/mocha/lib/runner.js:246:5) at process.startup.processNextTick.process._tickCallback (node.js:244:9)

我得到這個跟蹤文件中loginUserPass幾次總是在代理的.query()statament。這發生在OauthAM.js中,我添加了superagent-ouath require。

+0

+1聲波+問題 – fmsf

+0

你應該張貼整個堆棧跟蹤 – hereandnow78

回答

0

你完成了npm install從npm中檢索所有的模塊依賴關係嗎?似乎superagent的依賴關係可能不可用?

新的依賴關係與npm install superagent --save一起安裝(並放入package.json文件)。

這樣你就可以獲得superagent模塊所需的所有依賴關係。

+0

是我的package.json有所有的依賴並進行安裝,即使他們已被刪除並重新安裝 – Maldo

+0

@Maldo:它看起來像依賴在那裏。測試看起來如何失敗?在您的堆棧跟蹤它說loginUserPass.js線路74關口6. – Spoike

+0

>'它( '在同一個有效的登錄的AM登錄',函數(完成){ > \t \t \t agent2 > \t \t \t \t。員額(route.server) > \t \t \t \t .query(route。loginPost) > \t \t \t \t。發送( '用戶id =例1') > \t \t \t \t。發送( '爲userpass = 1234') > \t \t \t \t .END(功能(REQ,RES){ > //https://localhost:8443/AM/?0-1.IFormSubmitListener-form > //的console.log(util.inspect(RES)); > \t \t \t \t \t> res.should.have。 property('statusCode')。that.equals(200); > res ['redirects'] [0] .should.have.string(route.server + r oute.userPage); > res ['text']。should.contain('[email protected]'); > res ['text']。should.contain('Log out'); > \t \t \t \t \t done(); > \t \t \t \t}); > \t \t});' 74行是.query() – Maldo

0

在用npm init創建的新項目上安裝誓言時,會出現相同的錯誤消息。這GitHub的問題進行了討論建議增加以下行package.json文件的項目(即項目,你想創建,不是你想安裝一個):

"dependencies": {} 

這解決了這對我。當然,你提到你在package.json中安裝了依賴項,所以這個答案更適用於其他可能搜索錯誤消息的人。

https://github.com/stephenplusplus/grunt-bower-install/issues/9