[node.js] DeprecationWarning : 스크립트를 다른 서버로 이동할 때 보안 및 사용성 문제로 인해 Buffer ()가 더 이상 사용되지 않습니다.

스크립트를 다른 서버로 이동할 때 오류가 발생합니다.

(node ​​: 15707) [DEP0005] DeprecationWarning : Buffer ()는 보안 및 사용성 문제로 인해 더 이상 사용되지 않습니다. 대신 Buffer.alloc (), Buffer.allocUnsafe () 또는 Buffer.from () 메소드를 사용하십시오.

현재 버전 :

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();
        }
    });

 }



답변

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를 버전에 대한도이다.


답변

지원 중단 된 new Buffer()생성자 (Yarn에서 사용하는 iE)를 사용하면 지원 중단 경고가 발생할 수 있습니다. 따라서 사용되지 않거나 안전하지 않은 Buffer 생성자를 사용해서는 안됩니다.

사용 중단 경고 new Buffer()에 따라 다음 중 하나로 교체해야합니다.

  • Buffer.alloc()
  • Buffer.allocUnsafe() 또는
  • Buffer.from()

이 문제를 방지하기위한 또 다른 옵션은 대신 안전 버퍼 패키지를 사용하는 것입니다.

당신은 또한 시도 할 수 있습니다 (실을 사용할 때 ..) :

yarn global add yarn

여기에 언급 된대로 : 링크

댓글의 또 다른 제안 (thx에서 gkiely까지) : 자동 업데이트

참고 : 자동 업데이트는 사용할 수 없습니다. 프로젝트 내에서 버전을 적용하기위한 정책 보기

Yarn 버전을 업데이트하려면 다음을 실행하십시오.

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


답변

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');


답변