2017-06-17 32 views
7

我收到對象錯誤,同時通過http://localhost:3000/auth/register註冊一個簡單的平均值的應用,我已經使用mean init命令簡單地創作。 pbkdf2crypto正在產生錯誤,我不知道在哪裏尋找它。類型錯誤:在「消化」是必需的參數,並且不能是未定義

我已經做了許多像清除緩存NPM不同的東西,使用NPM等,請幫我重新安裝。以下是一些更多信息。

Mean --version: 0.12.15 
npm --version: 5.0.3 
node --version: v8.1.0 
bower --version: 1.8.0 
gulp --version: CLI and Local: 3.9.1 

代碼model.UserSchema.methods.hashPassword(d:\項目\平均\ CampaignBuilder \ node_modules \ meanio用戶\服務器\型號\ user.js的)

/** 
* Hash password 
* 
* @param {String} password 
* @return {String} 
* @api public 
*/ 
UserSchema.methods.hashPassword = function(password) { 
    if (!password || !this.salt) return ''; 
    var salt = new Buffer(this.salt, 'base64'); 
    return crypto.pbkdf2Sync(password, salt, 10000, 64).toString('base64'); 
}; 

註冊頁面調用http://localhost:3000/api/register和它產生500 Internal Server Error

Firefox是示出以下響應:

TypeError: The "digest" argument is required and must not be undefined 
at pbkdf2 (crypto.js:635:11) 
at Object.exports.pbkdf2Sync (crypto.js:628:10) 
at model.UserSchema.methods.hashPassword (D:\Projects\Mean\CampaignBuilder\node_modules\meanio-users\server\models\user.js:165:17) 
at model.<anonymous> (D:\Projects\Mean\CampaignBuilder\node_modules\meanio-users\server\models\user.js:94:31) 
at VirtualType.applySetters (D:\Projects\Mean\CampaignBuilder\node_modules\mongoose\lib\virtualtype.js:94:25) 
at model.Document.set (D:\Projects\Mean\CampaignBuilder\node_modules\mongoose\lib\document.js:656:12) 
at model._handleIndex (D:\Projects\Mean\CampaignBuilder\node_modules\mongoose\lib\document.js:587:14) 
at model.Document.set (D:\Projects\Mean\CampaignBuilder\node_modules\mongoose\lib\document.js:547:24) 
at model.Document (D:\Projects\Mean\CampaignBuilder\node_modules\mongoose\lib\document.js:71:12) 
at model.Model (D:\Projects\Mean\CampaignBuilder\node_modules\mongoose\lib\model.js:46:12) 
at new model (D:\Projects\Mean\CampaignBuilder\node_modules\mongoose\lib\model.js:3621:13) 
at create (D:\Projects\Mean\CampaignBuilder\node_modules\meanio-users\server\controllers\users.js:86:24) 
at Layer.handle [as handle_request] (D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\layer.js:95:5) 
at next (D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\route.js:137:13) 
at Route.dispatch (D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\route.js:112:3) 
at Layer.handle [as handle_request] (D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\layer.js:95:5) 
at D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\index.js:281:22 
at Function.process_params (D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\index.js:335:12) 
at next (D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\index.js:275:10) 
at loadUser (D:\Projects\Mean\CampaignBuilder\node_modules\meanio-users\server\controllers\users.js:202:24) 
at Layer.handle [as handle_request] (D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\layer.js:95:5) 
at trim_prefix (D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\index.js:317:13) 
at D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\index.js:284:7 
at Function.process_params (D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\index.js:335:12) 
at next (D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\index.js:275:10) 
at D:\Projects\Mean\CampaignBuilder\node_modules\connect-modrewrite\index.js:129:7 
at Layer.handle [as handle_request] (D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\layer.js:95:5) 
at trim_prefix (D:\Projects\Mean\CampaignBuilder\node_modules\meanio\lib\core_modules\server\node_modules\express\lib\router\index.js:317:13) 
+0

請張貼model.UserSchema.methods.hashPassword代碼( d:\項目\平均\ CampaignBuilder \ node_modules \ meanio用戶\服務器\型號\ user.js的:165:17) – Shadowfool

+0

正如我所說的,我創建使用的意思是初始化應用程序,所以它是等於默認的應用程序。但是,爲了便於參考,爲model.UserSchema.methods.hashPassword添加了代碼。 –

回答

19

crypto.pbkdf2Sync方法您缺少的最後一個參數是digest,從而被顯示的錯誤。

crypto.pbkdf2

另外隨着進一步調查,你可以看到,消化參數在節點V6.0必需的。

以前的默認似乎已經'sha1'

+0

你能指導我應該使用什麼嗎?我的意思是我應該使用'sha512'還是'md5'或任何我想要的?還是在選擇任何東西之前,我需要檢查一下其他地方或MEAN應用程序的配置?或者只是硬編碼的'sha512'就足夠了? –

+0

非常感謝。這與'sha512'(登錄/註冊兩者)。所以我假設解密也會起作用。我對MEAN,NodeJS和所有這些東西都很陌生,這讓我發瘋,因爲我什麼都不知道。 –

+0

很高興我能提供幫助,通過堆棧跟蹤進行文檔/讀取始終是嘗試調試的良好開端。你會很快掌握它的。是的,如果你可以登錄,那麼你很好。 – Shadowfool

2

這也可以通過錯版節點引起/運行有沒有在你有積極的

我的經驗節點的版本支持呼叫的版本:我的團隊需要節點中的應用6.10.0。有時我忘記切換到此版本的節點並運行8.6.0下的最新代碼,並收到相同的錯誤。只要我換回6.10.0,該網站將允許我登錄。

(我可以看到,接受的答案也提到這一點,但我想添加一個更加明顯的答案的情況下,它可以幫助別人那裏!)

相關問題