Yarn: Remplacer l'utilisation du nouveau constructeur de tampon obsolète / non sécurisé

Créé le 7 mars 2018  ·  84Commentaires  ·  Source: yarnpkg/yarn

Quel est le comportement actuel?

yarn utilise un constructeur obsolète new Buffer() et provoque des avertissements d'obsolescence lorsqu'il est exécuté avec NODE_PENDING_DEPRECATION=1 .

$ ag '\bBuffer\('
src/registries/npm-registry.js
340:        const pw = new Buffer(String(password), 'base64').toString();
341:        return 'Basic ' + new Buffer(String(username) + ':' + pw).toString('base64');

src/util/fs.js
835:const cr = new Buffer('\r', 'utf8')[0];
836:const lf = new Buffer('\n', 'utf8')[0];

Quel est le comportement attendu?

yarn ne doit pas utiliser le constructeur obsolète / unsafe Buffer . Selon l'avertissement d'obsolescence, new Buffer() doit être remplacé par l'un des éléments suivants: Buffer.alloc() , Buffer.allocUnsafe() ou Buffer.from() ; le package safe-buffer est une autre option.

Veuillez mentionner votre node.js, votre fil et la version de votre système d'exploitation.

$ node -v
v8.9.4

$ yarn -v
1.5.1

$ uname -a
Linux 4.15.6-300.fc27.x86_64 #1 SMP Mon Feb 26 18:43:03 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
cat-bug cat-compatibility high-priority triaged

Commentaire le plus utile

FYI: Je viens de parcourir les dépendances de yarn et il y en a deux qui appellent toujours new Buffer() :

  • tar-stream (corrigé, mais nous dépendons toujours d'une version plus ancienne)
  • v8-compile-cache (non corrigé)

Nous devrons probablement les mettre à jour.

Tous les 84 commentaires

Obtenir ce même avertissement sur macOS. Je crois que le # 5704 est un double de ceci.

Pour contourner le problème pour l'instant, j'ai créé un script ~/bin/node qui précède (installé par Homebrew) /usr/local/bin/node dans mon $PATH :

#!/bin/bash

/usr/local/bin/node --no-deprecation "$@"

FYI: Je viens de parcourir les dépendances de yarn et il y en a deux qui appellent toujours new Buffer() :

  • tar-stream (corrigé, mais nous dépendons toujours d'une version plus ancienne)
  • v8-compile-cache (non corrigé)

Nous devrons probablement les mettre à jour.

@martinstuecklschwaiger quand le correctif est-il fait ???

@marvinhagemeister v8-compile-cache vient de publier la version 2.0.0, qui corrige le bogue. J'espère que nous pourrons bientôt mettre à jour vers une nouvelle version.

@fengerzh @imsnif a déjà engagé la nouvelle version à maîtriser https://github.com/yarnpkg/yarn/commit/546a1576edbf701021ce65e3dd8daff267083f52 🎉

Quand prévoyez-vous de publier une nouvelle version avec ce correctif? Je n'ai trouvé aucune information sur la manière dont vous gérez les communiqués.

Je vois que le libellé high-priority été utilisé sur ce problème, cela ne signifie-t-il pas également que vous souhaitez appliquer le correctif dès que possible? Non seulement le réparer dès que possible.

EDIT: Je ne voulais pas paraître insistant ou exigeant de quelque manière que ce soit, je suis juste curieux de savoir comment vous abordez ces problèmes high-priority . La raison pour laquelle j'ai posé la question était parce qu'il est ennuyeux d'obtenir un avertissement à ce sujet pour chaque nouvelle instance de shell que je démarre.

Cet avertissement a commencé à apparaître après la mise à niveau du nœud v0.9.x vers v0.10.1

@ piotr-cz vous voulez dire v10.1, 0.10 est assez ancien.

Merci, je voulais dire que l'avertissement a commencé à apparaître après la mise à niveau de la v9.x vers la v10.1.0

Vous recevez toujours cet avertissement avec le fil 1.6.0

yarn install v1.6.0
(node:22339) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security 
and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or 
Buffer.from() methods instead.

Mon node.js, yarn et la version du système d'exploitation

node -v
v10.1.0

yarn -v
1.6.0

uname -a
Darwin *****.local 17.5.0 Darwin Kernel Version 17.5.0: Fri Apr 13 19:32:32 PDT 2018; 
root:xnu-4570.51.2~1/RELEASE_X86_64 x86_64

Des progrès ici? Nous aimerions vraiment utiliser le nœud 10 dans notre projet sans aucune solution de contournement 🔥

C'est juste un avertissement. Pourquoi cela vous empêcherait-il de l'utiliser?

Même problème ici et cela fait que mon thème Roots Sage ne se compile pas à défaut de se déployer. Voir aussi https://discourse.roots.io/t/buffer-deprecated-yarn-warning/12525

@teohhanhui Les avertissements de longue durée sont problématiques car ils obscurcissent d'autres avertissements plus utiles: il serait déraisonnable de s'attendre à ce que les développeurs examinent tous les avertissements sur chaque build, et n'écartent mentalement que ceux "acceptables". Il est donc courant (et tout à fait raisonnable) de traiter tous les avertissements comme des erreurs. Ce n'est pas une plainte concernant le fil, ce qui est génial; mais la phrase «C'est juste un avertissement» déclenche une forte alarme mentale.

Il existe de grandes sociétés de logiciels / etc. extrêmement prospères, des noms de marque que nous connaissons tous, qui ont des règles à l'échelle de l'entreprise telles que: traiter les avertissements comme des erreurs ou les supprimer, mais ne dépensez jamais de travail humain à parcourir régulièrement les listes d'avertissement. Pour la raison mentionnée ci-dessus.

Cela ne veut pas dire que ce sont des réponses de conseils parfaites partout, mais ce n'est pas rare et assez bien démontré comme réalisable et précieux.

Si vous envisagez de traiter tous les avertissements comme des erreurs, n'auriez-vous pas un moyen d'ignorer / de mettre les avertissements sur liste blanche? Mais de toute façon, je ne vois pas en quoi c'est la faute de yarn si vous choisissez de faire ça. yarn n'est pas cassé dans ce cas.

Désolé de le faire, mais je dois verrouiller ce problème car les gens ne semblent pas lire les commentaires précédents. Voici le résumé:

  • Ce problème n'a pas encore été résolu (à partir de Yarn 1.6.0)
  • Oui, nous, en tant qu'équipe de fil, sommes conscients et travaillons dur pour résoudre ce problème et publier une nouvelle version. Vous pouvez suivre le # 5769 pour voir la progression (veuillez ne pas utiliser ce PR comme un autre forum de discussion pour cela)
  • Nous avons découvert un problème concernant les liens symboliques sous Windows lors de l'utilisation de Yarn sur Node 10, ce qui peut entraîner le blocage des installations avec une récursivité infinie. Ce problème est également traité dans # 5769

Je m'excuse au nom de toute l'équipe de Yarn pour le problème et le retard.

Mise à jour: le PR mentionné ci-dessus est maintenant fusionné. Nous publierons une nouvelle version dès que possible.

La version 1.7.0 avec le correctif vient d'être mise en ligne. Merci pour votre patience!

@teohhanhui l' utilisait dans un référentiel unique au sein d'une pile lerna, donc l'avertissement de fil tue le processus lerna (oui, cela pourrait être plus un paramètre de lerna ici, mais les avertissements de nettoyage corrigent également le problème pour nous)
@BYK merci byk pour votre effort

@BYK Je vois toujours des avertissements Buffer avec la version 1.7.0 de Homebrew:

$ NODE_OPTIONS=--trace-warnings yarn outdated
yarn outdated v1.7.0
(node:44538) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
    at showFlaggedDeprecation (buffer.js:159:11)
    at new Buffer (buffer.js:174:3)
    at Object.module.exports.module.exports (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:4105:6)
    at __webpack_require__ (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:22:30)
    at Object.module.exports.module.exports (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:4228:12)
    at __webpack_require__ (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:22:30)
    at Object.module.exports.module.exports (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:56449:11)
    at __webpack_require__ (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:22:30)
    at Object.<anonymous> (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:43234:13)
    at __webpack_require__ (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:22:30)

@ezzatron Même chose ici.

@ezzatron @AlexanderOMara
Je pense que l'avertissement n'apparaît qu'après avoir exécuté le fil pour la première fois après la mise à jour de l'infusion. Lors de l'exécution du fil pour la deuxième fois, l'avertissement est parti pour moi.

Voici l'état actuel de ma machine:

yarn -v
1.7.0

node -v
v10.1.0

uname -a
Darwin *****.local 17.5.0 Darwin Kernel Version 17.5.0: Fri Apr 13 19:32:32 PDT 2018; root:xnu-4570.51.2~1/RELEASE_X86_64 x86_64

Voici mon journal de terminal

$ yarn
yarn install v1.7.0
(node:73733) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
[1/4] 🔍  Resolving packages...
success Already up-to-date.
✨  Done in 0.47s.

$ yarn
yarn install v1.7.0
[1/4] 🔍  Resolving packages...
success Already up-to-date.
✨  Done in 0.40s.

Bonjour, j'ai toujours un DeprecationWarning lorsque je fais un yarn check

$ yarn check
yarn check v1.7.0
[---------------------------------------------------------------------------------------------------------------------------------------------------------------------------] 0/1697(node:84081) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methodsinstead.

Exécutez yarn upgrade , il est probable que vous ayez une dépendance sur upath raison d'un paquet et qu'une version soit toujours installée.

@rpellerin Merci mais upath est déjà à jour
Même après un yarn upgrade j'obtiens toujours le même avertissement mais pas au même moment que la version 1.6
Aussi après quelques tests, ce n'est pas limité à yarn check

$ yarn
yarn install v1.7.0
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[-----------------------------------------------------------------------------------------------------------------------------------------------------------------------] 0/943(node:7042) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
✨  Done in 24.87s.

Testé avec node v10.1.0 et v10.2.0, je suis sur OSX et j'utilise brew pour installer yarn (en utilisant le paramètre --without-node)

@ Justkant pouvez-vous exécuter NODE_OPTIONS=--trace-warnings yarn ? Cela vous dira quel paquet déclenche l'avertissement.
Ensuite, vous pouvez exécuter yarn why <package> . Je répondrai en conséquence.

Oui, il a été résolu après la mise à niveau vers la version 1.7.0
Merci @BYK

@rpellerin

yarn install v1.7.0
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[----------------------------------------------------------------------------------------------------------------------------------------------------------------------------] 0/943(node:8741) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
    at showFlaggedDeprecation (buffer.js:159:11)
    at new Buffer (buffer.js:174:3)
    at Object.<anonymous> (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:68767:20)
    at __webpack_require__ (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:22:30)
    at Object.module.exports.module.exports (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:129185:17)
    at __webpack_require__ (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:22:30)
    at Object.module.exports.module.exports.id (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:107036:12)
    at __webpack_require__ (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:22:30)
    at Object.module.exports.Object.defineProperty.value (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:62287:14)
    at __webpack_require__ (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:22:30)
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
✨  Done in 30.10s.

Mais pourquoi ferais-je un yarn why <package> ? L'avertissement n'est pas lié à mes colis locaux mais uniquement au fil lui-même, non?

Je pensais que ce serait à cause d'un colis. Essayez d'utiliser du fil de npm?
npm i -g yarn

Utiliser du fil de npm semble fonctionner correctement

yarn n'affiche aucun avertissement pour moi mais yarn outdated fait.

$ NODE_OPTIONS=--trace-warnings yarn outdated
yarn outdated v1.7.0
(node:28493) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
    at showFlaggedDeprecation (buffer.js:159:11)
    at new Buffer (buffer.js:174:3)
    at Object.module.exports.module.exports (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:4105:6)
    at __webpack_require__ (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:22:30)
    at Object.module.exports.module.exports (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:4228:12)
    at __webpack_require__ (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:22:30)
    at Object.module.exports.module.exports (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:56449:11)
    at __webpack_require__ (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:22:30)
    at Object.<anonymous> (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:43234:13)
    at __webpack_require__ (/usr/local/Cellar/yarn/1.7.0/libexec/lib/cli.js:22:30)
✨  Done in 1.10s.

Attention: il semble que l'ancien constructeur de tampon soit toujours utilisé pour la CLI globale. Je reçois toujours le message d'erreur lorsque je traite les commandes yarn global . @BYK

Ack! Merci pour les rapports détaillés. Je vais examiner cela aujourd'hui.

D'accord, le paquet incriminé est sshpk qui est requis par http-signature qui est requis par request . Il y a un PR pour une solution, mais il ne semble pas avoir d'amour. Quelqu'un connaît quelqu'un chez Joyent pour nous aider?

Toujours problème à partir du fil 1.7.0 avec nœud> 10.0.0

Correction d'un problème en désinstallant le nœud fourni avec yarn et en installant la version stable 8.11.2 à partir de https://nodejs.org/en/

Correction d'un problème en désinstallant le nœud fourni avec yarn et installé [ancienne version] ...

Ce n'est pas vraiment une "correction" si vous revenez simplement à une version avant qu'elle ne soit obsolète car elle n'est pas sûre.

Le problème lié à @mikestepanov semble avoir été résolu. Le fichier incriminé utilise maintenant Buffer.from :

https://github.com/joyent/node-sshpk/blob/175758a9473523409339e6c519c470c808ca03de/lib/algs.js

Cela semble avoir été publié en tant que 1.14.2, ce qui correspond http-signature plage de versions requise de

IOW, il semble que la simple mise à jour

La seule chose qui a aidé était la suppression du fichier yarn.lock, comme l' a dit

FWIW ce bogue a cassé getstorybook pour moi parce qu'il a essayé d'analyser stderr, sur lequel les avertissements sont affichés. Je ne sais pas si storybook-cli a été mis à jour pour contourner ce problème, mais il convient de mentionner que c'est plus qu'un problème cosmétique.

@BYK La situation avec ce bogue est très triste pour les développeurs du monde entier, pouvez-vous publier une version fixe de yarn (1.7.1 ou smth) avec une version bumpée du package à l'intérieur comme proposé dans https://github.com/ yarnpkg / yarn / issues / 5477 # issuecomment -396903361 s'il vous plaît? 🙏

Ce commit (du mois dernier) semble être censé fermer ce problème, mais je le vois toujours avec le nœud 10.5.0 & yarn 1.9.0-20180621.1511 (tous les soirs). Comme la situation de @Gurenax , l'avertissement n'apparaît que lors de l'exécution initiale pour moi (supprimez node_modules puis exécutez yarn ). Au cas où cela serait utile pour d'autres, j'ai inclus quelques notes liées à ce que j'ai trouvé / fait ci-dessous. Il semble que les dépendances de yarn soient obsolètes, car on peut voir les appels new Buffer dans les versions JS autonomes nocturnes actuelles.

  1. Vérifiez avec un projet vide / minimal pour voir si l'avertissement persiste. (par exemple mkdir empty-project; cd empty-project; npm init empty-project; yarn ).
  2. Si l'avertissement y apparaît, vous devrez peut-être mettre à jour yarn (essayez le dernier rc: v1.8 bien que la v1.7.0 était censée le corriger). Dans mon cas, cela ne s'est pas produit dans le cas minimal, j'ai donc dû creuser plus profondément. J'ai d'abord lancé yarn upgrade mais cela n'a pas semblé résoudre le problème.
  3. Essayez de courir avec --trace-warnings activé, par exemple rm -rf node_modules/; NODE_OPTIONS=--trace-warnings yarn :
(node:4672) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
    at showFlaggedDeprecation (buffer.js:159:11)
    at new Buffer (buffer.js:174:3)
    at Object.<anonymous> (/usr/share/yarn/lib/cli.js:68827:20)
    at __webpack_require__ (/usr/share/yarn/lib/cli.js:22:30)
    at Object.module.exports.module.exports (/usr/share/yarn/lib/cli.js:129944:17)
    at __webpack_require__ (/usr/share/yarn/lib/cli.js:22:30)
    at Object.module.exports.module.exports.id (/usr/share/yarn/lib/cli.js:107711:12)
    at __webpack_require__ (/usr/share/yarn/lib/cli.js:22:30)
    at Object.module.exports.Object.defineProperty.value (/usr/share/yarn/lib/cli.js:62536:14)
    at __webpack_require__ (/usr/share/yarn/lib/cli.js:22:30)

À ce stade, j'étais un peu perplexe. Ouverture de /usr/share/yarn/lib/cli.js furtivement près de la ligne 68827 J'ai vu ceci:

/* 285 */
/***/ (function(module, exports, __webpack_require__) {

var stream = __webpack_require__(69)
var eos = __webpack_require__(549)
var inherits = __webpack_require__(59)
var shift = __webpack_require__(741)

var SIGNAL_FLUSH = new Buffer([0])

var onuncork = function(self, fn) {
  if (self._corked) self.once('uncork', fn)
  else fn()
}

var destroyer = function(self, end) {
  return function(err) {
    if (err) self.destroy(err.message === 'premature close' ? null : err)
    else if (end && !self._ended) self.end()
  }
}

La recherche sur GitHub de certaines des parties les plus uniques de ce code m'a amené à découvrir qu'il provenait de duplexify avant la v3.5.4. Ensuite, j'ai couru yarn why duplexify et j'ai découvert qu'une de mes dépendances l'utilisait. Cependant, il utilisait la v3.6.0, ce qui ne devrait pas poser de problème. J'ai essayé d'ajouter ce package / version à mon projet vide / minimal et de réexécuter yarn . En effet, cela a bien fonctionné: aucun avertissement. De plus, cela n'explique pas pourquoi la trace a montré un script webpack associé à yarn .

Bien que je ne sache pas comment je l'ai fait, une fois, j'ai eu une ligne différente dans la trace pour l'avertissement, et elle pointait vers le même fichier cli.js de webpack'd, mais le code à l'intérieur était de sshpk (avant # 175758a).

Réalisant que new Buffer apparaît dans le code de la version de nuit JS autonome de yarn, j'ai finalement abandonné pour le moment, espérant que le message disparaîtra de lui-même après la mise à jour de yarn dans le futur.

@jacobq Merci d'avoir examiné cela! Je ne suis pas un expert en la matière - je viens littéralement de tomber sur ce problème - mais après avoir lu et relu vos résultats, il semble que ce que vous dites, c'est que Yarn inclut une ancienne version de duplexify dans son code CLI? Est-ce exact?

Je vois toujours cela aussi.

Je suis allé sur https://nodejs.org/ tout à l'heure et j'ai découvert que la dernière version est déjà 10.5 👀
En attendant, mes collègues et moi sommes toujours sur 8.x car ce numéro est toujours ouvert 😅 Je suis tellement impatient d'explorer les nouveautés de la 10.x! 🚀 🙏

@kachkaev Ne laissez pas cet avertissement vous arrêter! :sourire:

@mcmire Il semble que moyen pour moi. Je soupçonne qu'ils ont juste besoin d'exécuter yarn upgrade ... pour rafraîchir le fichier de verrouillage.

@kachkaev 8.x est toujours la dernière version de LTS jusqu'à cet automne , il n'y a donc pas de honte à l'utiliser, surtout en production. De plus, comme @teohhanhui l'a mentionné, c'est juste un avertissement donc ce n'est pas "cassé" sauf dans les cas où la sortie est étroitement couplée à une application / logique.

@jacobq il existe déjà des packages qui nécessitent node> = 9 pour fonctionner.

J'utilisais également le nœud 8 à cause de cet avertissement, mais maintenant je suis obligé de le voir à chaque fois que j'utilise du fil, ce qui est vraiment décevant. Cela me fait penser à utiliser npm à la place, mais j'aime beaucoup le fil et je ne veux pas revenir en arrière. Essayer d'ignorer cet avertissement tous les jours est triste. 😢

Quelqu'un a-t-il encore trouvé une solution à ce problème? C'est tellement ennuyeux de regarder à chaque fois que je lance une commande de fil

+1

fil installer v1.7.0
info Aucun fichier de verrouillage trouvé.
[1/4] Résolution des packages ...
⠁ (nœud: 12916) [DEP0005] DeprecationWarning: Buffer () est obsolète en raison de problèmes de sécurité et d'utilisabilité. Veuillez utiliser les méthodes Buffer.alloc (), Buffer.allocUnsafe () ou Buffer.from () à la place.
à showFlaggedDeprecation (buffer.js: 159: 11)
au nouveau tampon (buffer.js: 174: 3)
à Object.module.exports.module.exports (C: \ Program Files (x86) \ Yarn \ lib \ cli.js: 4105: 6)
à __webpack_require__ (C: \ Program Files (x86) \ Yarn \ lib \ cli.js: 22: 30)
à Object.module.exports.module.exports (C: \ Program Files (x86) \ Yarn \ lib \ cli.js: 4228: 12)
à __webpack_require__ (C: \ Program Files (x86) \ Yarn \ lib \ cli.js: 22: 30)
à Object.module.exports.module.exports (C: \ Program Files (x86) \ Yarn \ lib \ cli.js: 56449: 11)
à __webpack_require__ (C: \ Program Files (x86) \ Yarn \ lib \ cli.js: 22: 30)
à Object.(C: \ Program Files (x86) \ Yarn \ lib \ cli.js: 43234: 13)

J'en souffrais également sur mon OSX, mais un:

yarn global add yarn

Semblait le résoudre ... Je me demande si la version sur homebrew est en quelque sorte cassée ... 🤔

@carddamom Est-ce que cela l'a vraiment résolu ou peut-être que le problème a tout simplement disparu parce que vous l'aviez déjà exécuté une fois? (Je vois toujours new Buffer apparaître 134 fois dans la nuit du 7/6 .) Je suis curieux: si vous supprimez node_modules et exécutez à nouveau yarn , voyez-vous

Cela a résolu ce problème pour moi également:

image

J'ai supprimé le fil qui était installé avec Homebrew et je l'ai réinstallé globalement avec npm. Je n'ai plus vu ce problème et certaines autres erreurs liées au gyp ont également disparu.

Je me demande si la version sur homebrew est en quelque sorte cassée ... 🤔

Je pointerais certainement mon doigt sur Homebrew maintenant.

@jacobq Pour moi, il n'y avait pas de node_modules à désinstaller, puisque j'utilisais "yarn global", comme anecdote, j'ai également essayé de relier le paquet en utilisant homebrew et l'erreur est réapparue, donc cela confirme encore cela ...

La raison pour laquelle vous ne voyez que l'avertissement de la version tar.gz et de Homebrew ( qui installe simplement la version tar.gz ) est que Node n'émet pas l'avertissement d'obsolescence lorsque le module qui a appelé new Buffer est à l'intérieur d'un node_modules répertoire.

Ainsi, lorsque vous installez via homebrew, l'exécutable yarn sera à:

/usr/local/bin/yarn

Mais lorsque vous installez via npm, ce sera sur un chemin comme (j'utilise nvm ici):

~/.nvm/versions/node/v10.6.0/lib/node_modules/yarn/bin/yarn

Le code est exactement le même, la seule différence est que parce que npm l'a installé dans un répertoire contenant node_modules il n'émet actuellement pas d'avertissement.

Voir isInsideNodeModules appelés à l' intérieur

De l'apparence des choses lib/cli.js contient toujours un certain nombre d'appels à new Buffer . Il s'agit d'un gros paquet Webpack, donc je ne sais pas de quelles bibliothèques ils proviennent, mais un commentaire ci-dessus semble avoir identifié le paquet.

Oui, en confirmant simplement que cela se produit toujours pour moi avec la version du référentiel Debian / Ubuntu (probablement pour les raisons énumérées ci-dessus), ce n'est certainement rien de spécifique à Homebrew.

S'il faut un certain temps pour mettre à jour les utilisations de new Buffer dans les différentes dépendances, il vaut peut-être la peine de trouver un moyen de faire taire cet avertissement particulier pour le moment. De mon côté, ajouter le drapeau --no-deprecation à l'endroit approprié dans /usr/bin/yarn fonctionne, mais semble un peu hacky et lourd.

Edit: vous pouvez également exécuter du fil comme NODE_OPTIONS=--no-deprecation yarn qui fonctionne. Je pense que je vais définir cela comme un alias.

@jacobq ... pour la suggestion de vos gars, j'ai supprimé mes commentaires, je n'ai laissé que le sien, alors ça semble court! Je ne vais pas en ajouter plus.
...Terminé...

Comme solution temporaire, j'utilise un alias comme le suggère @noinkling .

Pour ceux qui utilisent fish :

function yarn
  env NODE_OPTIONS=--no-deprecation yarn $argv
end

Cela se produit toujours sur 1.9.2 rc qui contient 2f4bba1 (?), Par exemple

yarn install v1.9.2
[1/5] 🔍  Validating package.json...
[2/5] 🔍  Resolving packages...
[3/5] 🚚  Fetching packages...
[----------------------------------------------------------------------] 0/1820
(node:1936) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
[4/5] 🔗  Linking dependencies...

À l'aide du nœud 10.6, macOS 10.13.6.

@vieira Oui, malheureusement, il y a encore d'autres déps qui doivent être mis à niveau pour résoudre complètement ce problème. Voir mon commentaire ici pour une liste d'entre eux. (Certains attendent des RP, donc vous pourrez peut-être aider en contribuant à ces efforts ou au moins en donnant une réaction +1).

avoir le même problème
nœud v10.7.0, fil 1.9.2

node:67668) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
error [email protected]: The engine "node" is incompatible with this module. Expected version ">=4 <=9".

@bogdansoare semble que vous utilisez un module incompatible dans votre projet. Essayez yarn why upath puis supprimez / mettez à jour la partie qui l'apporte pour éliminer l'erreur.

PS + 1 / moi aussi les commentaires sont généralement mal vus. Veuillez utiliser les boutons de réaction à la place.

@jacobq Ce problème GitHub a été

@corshamax Ce problème spécifique est résolu car nous avons mis à jour notre code pour arrêter d'utiliser la structure problématique. L'avertissement apparaît toujours car certaines de nos dépendances l'utilisent toujours, mais c'est un problème différent (avec le même résultat, malheureusement) qui devrait être signalé aux projets concernés (et ensuite à nous une fois qu'une version corrigée est faite afin que nous puissions mettre à niveau la dépendance affectée).

Et comme pour tout, nous acceptons les demandes d'extraction, donc si vous découvrez que quelque chose peut être corrigé, ouvrez-en une et nous nous assurerons de la fusionner pour la prochaine version. @jacobq a fait un travail formidable en listant les dépendances qui pourraient avoir besoin d'être mises à jour, c'est un bon point de départ: https://github.com/yarnpkg/yarn/pull/5934#issuecomment -406346724

Je vois ce problème avec le nœud v10.8.0 et le fil v1.9.4.

Il semble que tous les PR mentionnés dans https://github.com/yarnpkg/yarn/pull/5934#issuecomment -406346724 ont été fusionnés. J'espère que cela signifie que nous pourrons voir une solution à ce problème très bientôt.

@vrobinson Oui, ils devraient être corrigés par https://github.com/yarnpkg/yarn/pull/6208 - Vous pouvez le voir en recherchant dans le JS autonome new Buffer et en observant qu'il n'apparaît que dans les solutions de secours et commentaires. Ayez de la patience: smile_cat:

Mise à jour: on dirait qu'il vient d'atterrir: tada: alors surveillez le prochain soir. À tous ceux qui ont contribué à ce que cela se produise,: bowing_man: merci: priez:!

J'ai eu cette erreur, est-ce que cela a été résolu?

@ rof20004 : point_up: (juste au-dessus de votre commentaire) . PR a fusionné, donc il est maintenant "corrigé" sur la branche master du code source. Cependant, vous continuerez à voir cet avertissement avec Node 10 jusqu'à (1) une nouvelle version est publiée et (2) vous mettez à niveau vers cette version.

@jacobq J'utilise le paquet debian, je dois attendre le nouveau paquet puis '-'.

Merci :)

@ rof20004 Vous devriez pouvoir commencer à l'utiliser demain, si vous le souhaitez, assurez-vous simplement que apt pointe vers le soir:
https://yarnpkg.com/en/docs/install#debian -nightly

@jacobq donc nous allons voir ce problème enfin résolu une fois pour toutes avec [email protected] ,

Ce ne sera probablement pas une version de correctif, plus comme 1.10

J'ai le même problème.
$ yarn install
node:39) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead. error An unexpected error occurred: "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz: getaddrinfo EADDRNOTAVAIL registry.yarnpkg.com registry.yarnpkg.com:443". info If you think this is a bug, please open a bug report with the information provided in "/app/yarn-error.log". info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
/app $ node -v v10.10.0 /app $ yarn -v 1.9.4 /app $

quelqu'un a la solution?

@ codestart123 a lu le fil, ils ont dit qu'il était corrigé tous les soirs mais pas encore publié.

@ codestart123 L'erreur que vous avez mentionnée n'est pas causée par ce problème (vous pouvez ignorer l'avertissement d'obsolescence):

error An unexpected error occurred: "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz: getaddrinfo EADDRNOTAVAIL registry.yarnpkg.com registry.yarnpkg.com:443"

EADDRNOTAVAIL est une erreur liée au réseau (erreur: adresse non disponible). Essayez d'exécuter ping registry.yarnpkg.com pour confirmer que votre système peut résoudre le nom et atteindre l'hôte.

A-t-il encore été corrigé?

@ ryanzhu1024 il a été corrigé dans la version 1.10.0, publiée il y a quelques jours 👍

En attente de la version du fil de mise à niveau du nœud.

Je ne peux pas croire que cet avertissement ennuyeux soit enfin parti. Je vous remercie :)

Hooraaaay 🙌 🎉 🍾

@goktugyil La question que vous avez liée ne fait aucune mention de yarn . Si vous utilisez du fil, assurez-vous d'avoir la dernière version (actuellement 1.12.3 ). Si vous n'utilisez pas yarn veuillez ne pas poster ici. StackOverflow est un bon endroit pour poser des questions générales sur la programmation, et https://github.com/nodejs/help est un bon endroit pour les questions Node. https://github.com/yarnpkg/yarn/issues est pour les demandes de fonctionnalités et les problèmes liés au fil (pas pour le support / questions de développement général).

@arcanis / @BYK / @imsnif Pourriez-vous verrouiller ce fil? Ce problème a été résolu dans le fil et ses dépendances depuis un certain temps maintenant, et je ne pense pas que d'autres discussions ici profiteront à qui que ce soit.

Cette page vous a été utile?
0 / 5 - 0 notes