2017-06-17 5 views
7

को अनिर्धारित नहीं किया जाना चाहिए, मुझे http://localhost:3000/auth/register के माध्यम से एक साधारण मीन एप्लिकेशन पंजीकृत करते समय विषय त्रुटि मिल रही है, मैंने बस mean init कमांड का उपयोग करके बनाया है। pbkdf2 या crypto त्रुटि उत्पन्न कर रहा है और मुझे नहीं पता कि इसे कहां देखना है।टाइप एरर: "डाइजेस्ट" तर्क आवश्यक है और इसे

मैंने एनपीएम कैश की तरह कई अलग-अलग चीजें की हैं, एनपीएम आदि का उपयोग करके पुनः स्थापित किया गया है। कृपया मेरी मदद करें। कुछ और जानकारी निम्नलिखित है। model.UserSchema.methods.hashPassword के लिए

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 

संहिता (डी: \ परियोजनाओं \ मीन \ 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 उत्पन्न करता है।

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 के लिए कोड पोस्ट करें (डी: \ प्रोजेक्ट्स \ मीन \ अभियानबिल्डर \ node_modules \ meanio-users \ server \ models \ user.js: 165: 17) – Shadowfool

+0

जैसा कि मैंने कहा था कि मैंने औसत init का उपयोग करके एप्लिकेशन बनाया है, इसलिए यह डिफ़ॉल्ट MEAN एप्लिकेशन है। हालांकि, संदर्भ की आसानी के लिए मॉडल.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 पर वापस आ जाता हूं, वेबसाइट मुझे लॉगिन करने की अनुमति देगी।

(मैं देख सकते हैं कि स्वीकार किए जाते हैं जवाब भी यह उल्लेख है, लेकिन मैं एक और अधिक स्पष्ट जवाब के मामले में यह वहाँ बाहर किसी को मदद करता है जोड़ना चाहते थे!)

संबंधित मुद्दे