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


130

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

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

 }

1
이 스레드를 확인 했습니까? github.com/yarnpkg/yarn/issues/5770
Hemadri Dasari

4
이것은 오류가 아니라 버퍼를 만드는이 방법이 더 이상 사용되지 않는다는
stdob--

답변:


315
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
내 코드에 새로운 Buffer ()가 없으면 어떻게합니까? 그냥 package-lock.json에 있습니까?
Khaled Jamal

@KhaledJamal 당신은 package-lock.json에 정확히 무엇을 가지고 있습니까?
Nebojsa Sapic

2
@NebojsaSapic 문제를 추적 한 후 내 프로젝트에 angular universal을 추가 한 후 server.js가 사용하고 있음을 알았으므로 최신 버전의 It을 사용하지 않기 때문에 믿습니다.
Khaled Jamal

@KhaledJamal 덕분에 문제를 제기하고있는 것이 사람의 공유 같은 문제 경우, 게시물에 대한 보관
Nebojsa Sapic

또한 각도 유니버설을 추가하여 각도 프로젝트를 서버 측 렌더링으로 변환했을 때 @KhaledJamal과 동일한 문제가 발생합니다.
user2869612 2010 년

16

지원 중단 된 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

1
내 코드에 새로운 Buffer ()가 없으면 어떻게합니까? 그냥 package-lock.json에 있습니다
Khaled Jamal 19

yarn을 업데이트하는 쉬운 방법 : 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');
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.