Kullanımdan kaldırma Uyarı: Komut dosyamı başka bir sunucuya taşıdığımda güvenlik ve kullanılabilirlik sorunları nedeniyle Buffer () kullanımdan kaldırıldı


132

Komut dosyası diğer sunucuya taşındığında hata alınıyor.

(düğüm: 15707) [DEP0005] Kullanımdan Kaldırma Uyarısı: Buffer (), güvenlik ve kullanılabilirlik sorunları nedeniyle kullanımdan kaldırıldı. Lütfen bunun yerine Buffer.alloc (), Buffer.allocUnsafe () veya Buffer.from () yöntemlerini kullanın.

Mevcut Sürümler:

Ubuntu 16.04.4 LTS  
Node - v10.9.0  
NPM - 6.2.0  

Önceki versiyon:

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
Bu konuyu kontrol ettin mi? github.com/yarnpkg/yarn/issues/5770
Hemadri Dasari

4
Bu bir hata değildir, bu bir arabellek oluşturma yönteminin kullanımdan kaldırıldığına dair bir uyarıdır: nodejs.org/api/buffer.html#buffer_new_buffer_string_encoding
stdob

Yanıtlar:


319
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

Not Buffer.alloc () daha hızlı aksi sıfır doldurma sağlamak gerekir budur .Kasaya yeni Tampon (boyut) (0) daha güncel node.js sürümlerinde de olduğu.


3
kodumda yeni Buffer () yoksa ne olur? Sadece package-lock.json'da mı var?
Khaled Jamal

@KhaledJamal, package-lock.json'da tam olarak ne var?
Nebojsa Sapic

2
@NebojsaSapic sorunu takip ettikten sonra projeme açısal evrensel ekledikten sonra server.js'nin onu kullandığını anladım, inanıyorum ki en son sürümünü kullanmıyorum.
Khaled Jamal

@KhaledJamal, sorununuzu gündeme getirdiğiniz için teşekkür eder ve birisi aynı sorunu paylaşırsa gönderi için arşivlemesini sağlar
Nebojsa Sapic

Açısal projemi açısal evrensel ekleyerek sunucu tarafı görüntülemeye dönüştürdüğümde @KhaledJamal ile aynı sorunu görüyorum.
user2869612

16

Kullanımdan kaldırılan new Buffer()yapıcının (Yarn tarafından kullanıldığı şekliyle iE) kullanılması, kullanımdan kaldırma uyarılarına neden olabilir. Bu nedenle, kullanımdan kaldırılmış / güvenli olmayan Buffer yapıcısı KULLANILMAMALIDIR.

Kullanımdan kaldırma uyarısına göre, aşağıdakilerden new Buffer()biri ile değiştirilmelidir:

  • Buffer.alloc()
  • Buffer.allocUnsafe() veya
  • Buffer.from()

Bu sorunu önlemek için başka bir seçenek, bunun yerine güvenli arabellek paketini kullanmak olacaktır.

Ayrıca deneyebilirsiniz (iplik kullanırken ..):

yarn global add yarn

burada bahsedildiği gibi: Bağlantı

Yorumlardan başka bir öneri (thx'den gkiely'ye): kendi kendini güncelleme

Not: kendi kendine güncelleme mevcut değildir. Bir proje içinde sürümleri zorunlu kılma politikalarına bakın

Yarn versiyonunuzu güncellemek için,

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

1
kodumda yeni Buffer () yoksa ne olur? Ben sadece package-lock.json'da var
Khaled Jamal

İpliği güncellemenin kolay yolu: legacy.yarnpkg.com/en/docs/cli/self-update
gkiely

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

Bu satırı kodunuzdan buna değiştirin -

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

veya benim durumumda, kodlamayı ters sırada verdim

var userPasswordString = Buffer.from(baseAuth, 'utf-8').toString('base64');
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.