DeprecationWarning: बफ़र () सुरक्षा और प्रयोज्य मुद्दों के कारण पदावनत किया जाता है जब मैं अपनी स्क्रिप्ट को किसी अन्य सर्वर पर ले जाता हूं


129

स्क्रिप्ट के अन्य सर्वर पर जाने पर त्रुटि हो रही है।

(नोड: 15707) [DEP0005] पदावनति: बफर () सुरक्षा और प्रयोज्य मुद्दों के कारण पदावनत किया जाता है। इसके बजाय बफ़र .alloc (), Buffer.allocUnsafe (), या बफ़र.फ्रॉम () विधियों का उपयोग करें।

वर्तमान संस्करण:

Ubuntu 16.04.4 LTS  
Node - v10.9.0  
NPM - 6.2.0  

पुराना वर्जन:

Ubuntu 14.04.3 LTS
NPM - 3.10.10
Node - v6.10.3


exports.basicAuthentication = function (req, res, next) {
    console.log("basicAuthentication");
    if (!req.headers.authorization) {
        return res.status(401).send({
            message: "Unauthorised access"
        });
    }
    var auth = req.headers.authorization;
    var baseAuth = auth.replace("Basic", "");
    baseAuth = baseAuth.trim();
    var userPasswordString = new Buffer(baseAuth, 'base64').toString('ascii');
    var credentials = userPasswordString.split(':');

    var username = credentials[0] !== undefined ? credentials[0] : '';
    var password = credentials[1] !== undefined ? credentials[1] : '';
    var userQuery = {mobilenumber: username, otp: password};
    console.log(userQuery);
    User.findOne(userQuery).exec(function (err, userinfo) {
        if (err || !userinfo) {
             return res.status(401).send({
                message: "Unauthorised access"
             });
        } else {
            req.user = userinfo;
            next();
        }
    });

 }

1
क्या आपने इस धागे की जाँच की? github.com/yarnpkg/yarn/issues/5770
हेमाद्रि दासारी

4
यह एक त्रुटि नहीं है, यह एक चेतावनी है कि बफर बनाने की यह विधि पदावनत है: nodejs.org/api/buffer.html#buffer_new_buffer_string_encoding
stdobn

जवाबों:


313
new Buffer(number)            // Old
Buffer.alloc(number)          // New

new Buffer(string)            // Old
Buffer.from(string)           // New

new Buffer(string, encoding)  // Old
Buffer.from(string, encoding) // New

new Buffer(...arguments)      // Old
Buffer.from(...arguments)     // New

ध्यान दें कि Buffer.alloc () नए बफर (आकार) .fill (0) की तुलना में वर्तमान Node.js संस्करणों पर भी तेज़ है, जो कि आपको अन्यथा शून्य-फ़िलिंग सुनिश्चित करने की आवश्यकता होगी।


3
क्या होगा अगर मेरे कोड में कोई नया बफर () नहीं है? मैं सिर्फ पैकेज- lock.json में है?
खालिद जमाल

@KhaledJamal क्या वास्तव में आपके पास पैकेज- lock.json है?
नोबजसा सपिक

2
@NejjsaSapic इस मुद्दे को ट्रेस करने के बाद मैंने उस सर्वर का पता लगाया। अपनी परियोजना में कोणीय सार्वभौमिक जोड़ने के बाद मैं इसका उपयोग कर रहा था, मेरा मानना ​​है कि इसके नवीनतम संस्करण का उपयोग नहीं करने के कारण im।
खालिद जमाल

@KhaledJamal आपके मुद्दे को उठाने के लिए धन्यवाद और क्या यह पोस्ट के लिए संग्रहीत किया गया है अगर कोई समान समस्या साझा करता है
Nebojsa Sapic

मैं @KhaledJamal के रूप में एक ही मुद्दा भी देख रहा हूं जब मैंने कोणीय सार्वभौमिक जोड़कर अपनी कोणीय परियोजना को सर्वर साइड प्रतिपादन में परिवर्तित किया।
user2869612

16

पदावनत new Buffer()कंस्ट्रक्टर (यार्न द्वारा उपयोग के रूप में ईई) के उपयोग से डेप्रिसिएशन चेतावनी हो सकती है। इसलिए किसी को डिप्रेस्ड / असुरक्षित बफर कंस्ट्रक्टर का उपयोग नहीं करना चाहिए।

पदावनति चेतावनी के अनुसार निम्नलिखित में new Buffer()से एक के साथ प्रतिस्थापित किया जाना चाहिए:

  • Buffer.alloc()
  • Buffer.allocUnsafe() या
  • Buffer.from()

इस समस्या से बचने के लिए एक अन्य विकल्प सुरक्षित-बफर पैकेज का उपयोग करना होगा।

आप भी कोशिश कर सकते हैं (जब यार्न का उपयोग कर रहे हैं ..):

yarn global add yarn

जैसा कि यहाँ बताया गया है: लिंक

टिप्पणियों से एक और सुझाव (gxely को thx): स्व-अद्यतन

नोट: स्व-अद्यतन उपलब्ध नहीं है। एक परियोजना के भीतर संस्करणों को लागू करने के लिए नीतियां देखें

यार्न के अपने संस्करण को अपडेट करने के लिए, चलाएं

curl --compressed -o- -L https://yarnpkg.com/install.sh | bash

1
क्या होगा अगर मेरे कोड में कोई नया बफर () नहीं है? मेरे पास बस यह पैकेज-लॉक में है। जेसन
खालिद जमाल

यार्न को अपडेट करने का आसान तरीका: legacy.yarnpkg.com/en/docs/cli/self-update
gkiely

1
var userPasswordString = new Buffer(baseAuth, 'base64').toString('ascii');

इस लाइन को अपने कोड से इसमें बदलें -

var userPasswordString = Buffer.from(baseAuth, 'base64').toString('ascii');

या मेरे मामले में, मैंने रिवर्स ऑर्डर में एन्कोडिंग दिया

var userPasswordString = Buffer.from(baseAuth, 'utf-8').toString('base64');
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.