Yarn: استبدال استخدام مُنشئ Buffer الجديد المهمل / غير الآمن

تم إنشاؤها على ٧ مارس ٢٠١٨  ·  84تعليقات  ·  مصدر: yarnpkg/yarn

ما هو السلوك الحالي؟

yarn إهمال الاستخدامات new Buffer() منشئ ويسبب تحذيرات انتقاص عند تشغيله مع 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];

ما هو السلوك المتوقع؟

yarn لا ينبغي استخدام إهمال / غير آمنة Buffer المنشئ. وفقًا لتحذير الإيقاف ، يجب استبدال new Buffer() بواحد من Buffer.alloc() أو Buffer.allocUnsafe() أو Buffer.from() ؛ حزمة safe-buffer هي خيار آخر.

يرجى ذكر node.js والغزل وإصدار نظام التشغيل.

$ 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

التعليق الأكثر فائدة

لمعلوماتك: مررت للتو من خلال تبعيات الغزل وهناك اثنان لا يزالان يستدعيان new Buffer() :

  • تيار القطران (ثابت ، لكننا ما زلنا نعتمد على إصدار أقدم)
  • v8-compile-cache (غير ثابت)

سنحتاج على الأرجح إلى تحديث هؤلاء.

ال 84 كومينتر

الحصول على نفس هذا التحذير على macOS. أعتقد أن # 5704 هو نسخة مكررة من هذا.

كحل مؤقت في الوقت الحالي ، قمت بإنشاء برنامج نصي ~/bin/node يأتي قبل (مثبت على برنامج Homebrew) /usr/local/bin/node في $PATH :

#!/bin/bash

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

لمعلوماتك: مررت للتو من خلال تبعيات الغزل وهناك اثنان لا يزالان يستدعيان new Buffer() :

  • تيار القطران (ثابت ، لكننا ما زلنا نعتمد على إصدار أقدم)
  • v8-compile-cache (غير ثابت)

سنحتاج على الأرجح إلى تحديث هؤلاء.

martinstuecklschwaiger متى يتم الإصلاح ؟؟؟

marvinhagemeister v8-compile-cache أصدر للتو إصدار 2.0.0 ، والذي أصلح الخطأ. نأمل أن نتمكن من التحديث قريبًا إلى الإصدار الجديد.

fengerzhimsnif التزم بالفعل بالإصدار الجديد لإتقان https://github.com/yarnpkg/yarn/commit/546a1576edbf701021ce65e3dd8daff267083f52 🎉

متى تخطط لإصدار إصدار جديد بهذا الإصلاح؟ لم أتمكن من العثور على أي معلومات حول كيفية تعاملك مع الإصدارات.

أرى أن التسمية high-priority تم استخدامها في هذه المشكلة ، ألا يعني ذلك أيضًا أنك تريد دفع الإصلاح في أسرع وقت ممكن؟ ليس فقط إصلاحه في أسرع وقت ممكن.

تحرير: لم أقصد أن أبدو انتهازيًا أو متطلبًا بأي شكل من الأشكال ، فأنا أشعر بالفضول فقط حول كيفية التعامل مع هذه المشكلات high-priority . كان سبب سؤالي هو أنه من المزعج الحصول على تحذير حول هذا لكل مثيل shell جديد أبدأ به.

بدأ هذا التحذير في الظهور بعد أن قمت بالترقية من v0.9.x إلى v0.10.1

@ piotr-cz تقصد v10.1 ، 0.10 قديم جدًا.

شكرًا ، قصدت أن التحذير بدأ في الظهور بعد الترقية من الإصدار v9.x إلى الإصدار 10.1.0

لا يزال يتلقى هذا التحذير مع الغزل 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.

بلدي node.js ، الغزل وإصدار نظام التشغيل

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

أي تقدم هنا؟ نود حقًا استخدام العقدة 10 في مشروعنا دون أي حل بديل 🔥

إنه مجرد تحذير. لماذا يمنعك من استخدامه؟

نفس المشكلة هنا وتتسبب في عدم قيام سمة Roots Sage الخاصة بي بتجميعها وفشل نشرها. راجع أيضًا https://discourse.roots.io/t/buffer-deprecated-yarn-warning/12525

teohhanhui التحذيرات طويلة الأمد إشكالية لأنها تحجب تحذيرات أخرى أكثر فائدة: سيكون من غير المعقول أن نتوقع من المطورين أن

هناك شركات كبيرة ومزدهرة للغاية في مجال البرمجيات / إلخ ، وأسماء تجارية نعرفها جميعًا ، ولديها قواعد على مستوى الشركة مثل: التعامل مع التحذيرات كأخطاء أو حذفها ، ولكن لا تنفق أبدًا العمالة البشرية في البحث في قوائم التحذير بشكل روتيني. للسبب المذكور أعلاه.

هذا لا يعني أن هذه النصائح مثالية للردود في كل مكان ، ولكنها ليست غير شائعة ويتم إثباتها جيدًا على أنها عملية وقيمة.

إذا كنت ستتعامل مع جميع التحذيرات على أنها أخطاء ، ألن يكون لديك طريقة لتجاهل / إدراج التحذيرات في القائمة البيضاء؟ لكن على أي حال ، لا أرى كيف أنه خطأ yarn أنك اخترت القيام بذلك. لم يتم كسر yarn في هذه الحالة.

آسف للقيام بذلك ولكن لا بد لي من قفل هذه المشكلة لأن الناس لا يقرأون التعليقات السابقة على ما يبدو. هذا هو الملخص:

  • لم يتم حل هذه المشكلة بعد (اعتبارًا من Yarn 1.6.0)
  • نعم ، نحن فريق الغزل على دراية ونعمل بجد لإصلاح هذا وإصدار إصدار جديد. يمكنك متابعة # 5769 لمعرفة التقدم (من فضلك ، من فضلك لا تستخدم هذا العلاقات العامة كمنتدى مناقشة آخر لهذا)
  • لقد اكتشفنا مشكلة تتعلق بالروابط الرمزية على Windows عند استخدام Yarn على Node 10 والتي قد تتسبب في توقف عمليات التثبيت بتكرار لا نهائي. تتم معالجة هذه المشكلة أيضًا في # 5769

أعتذر نيابة عن فريق Yarn بالكامل عن المشكلة والتأخير.

تحديث: تم الآن دمج العلاقات العامة المذكورة أعلاه. سنصدر نسخة جديدة في أقرب وقت ممكن.

تم نشر الإصدار 1.7.0 مع الإصلاح. شكرا لصبرك!

teohhanhui كانوا يستخدمونه في مستودع واحد داخل مكدس lerna ، لذا فإن تحذير الغزل من عملية lerna (نعم قد يكون الأمر أكثر من إعداد lerna هنا ، ولكن تحذيرات التنظيف تعمل أيضًا على إصلاح المشكلة بالنسبة لنا)
BYK شكرا byk لجهودكم

BYK ما زلت أرى تحذيرات Buffer مع 1.7.0 من 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 كذلك هنا.

تضمين التغريدة
أعتقد أن التحذير لا يظهر إلا بعد تنفيذ الغزل لأول مرة بعد تحديث الشراب. عند تنفيذ الغزل في المرة الثانية ، ذهب التحذير بالنسبة لي.

ها هي الحالة الحالية لجهازي:

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

هذا هو السجل الخاص بي

$ 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.

مرحبًا ، ما زلت أحصل على DeprecationWarning عند إجراء 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.

قم بتشغيل yarn upgrade ، فمن المحتمل أن يكون لديك تبعية على upath بسبب بعض الحزم ولا يزال لديك إصدار مثبت.

rpellerin شكرًا ولكن upath محدث بالفعل
حتى بعد yarn upgrade ما زلت أتلقى نفس التحذير ولكن ليس في نفس اللحظة مثل الإصدار 1.6
أيضًا بعد بعض الاختبارات ، لا يقتصر الأمر على 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.

تم الاختبار مع العقدة v10.1.0 و v10.2.0 ، أنا على OSX وأستخدم الشراب لتثبيت الخيوط (باستخدام - بدون معلمة عقدة)

Justkant هل يمكنك تشغيل NODE_OPTIONS=--trace-warnings yarn ؟ سيخبرك هذا عن الحزمة التي تطلق التحذير.
ثم يمكنك تشغيل yarn why <package> . سأرد وفقًا لذلك.

نعم ، تم حلها بعد الترقية إلى 1.7.0
شكرا BYK

تضمين التغريدة

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.

ولكن لماذا أفعل yarn why <package> ؟ التحذير ليس مرتبطًا بحزمتي المحلية ولكن فقط إلى الغزل نفسه ، أليس كذلك؟

اعتقدت أنه سيكون بسبب طرد. حاول استخدام الغزل من npm؟
npm i -g yarn

يبدو أن استخدام خيوط من npm يعمل بشكل صحيح

لا يظهر yarn أي تحذير بالنسبة لي ولكن yarn outdated يفعل ذلك.

$ 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.

تنبيه: يبدو أن مُنشئ المخزن المؤقت القديم لا يزال مستخدمًا لـ CLI العام. ما زلت أتلقى رسالة الخطأ عند التعامل مع أوامر yarn global . BYK

آك! شكرا للتقارير التفصيلية. سأبحث في هذا اليوم.

حسنًا ، الحزمة المخالفة هي sshpk وهو مطلوب بواسطة http-signature وهو مطلوب بواسطة request . هناك علاقات عامة لإصلاحها ولكن لا يبدو أنها تحظى بأي حب. هل يعرف أحد أحدًا في Joyent لمساعدتنا؟

لا يزال إصدار الغزل 1.7.0 مع العقدة> 10.0.0

تم إصلاح المشكلة عن طريق إلغاء تثبيت العقدة التي تأتي مع الغزل والمثبتة 8.11.2 مستقرة من https://nodejs.org/en/

تم إصلاح المشكلة عن طريق إلغاء تثبيت العقدة المصاحبة للغزل والمثبتة [الإصدار القديم] ...

إنه ليس "إصلاحًا" حقًا إذا عدت للتو إلى إصدار قبل أن يتم إهماله لكونه غير آمن.

يبدو أن المشكلة المرتبطة mikestepanov قد تم حلها. يستخدم الملف المخالف الآن Buffer.from :

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

يبدو أنه قد تم إصدار هذا كـ 1.14.2 ، والذي يطابق نطاق الإصدار المطلوب لـ http-signature .

يبدو أن تحديث ملف قفل الغزل وقطع إصدار جديد ببساطة يجب أن يصلح ذلك.

الشيء الوحيد الذي ساعد في ذلك هو حذف ملف yarn.lock ، كما قال pluma

FWIW كسر هذا الخطأ getstorybook بالنسبة لي لأنه حاول تحليل stderr ، والذي تتم طباعة التحذيرات عليه. لست متأكدًا مما إذا كان قد تم تحديث storybook-cli للتغلب على هذا الأمر ، لكن تجدر الإشارة إلى أن هذا أكثر من مجرد مشكلة تجميلية.

BYK الوضع مع هذا الخطأ محزن جدًا للمطورين في جميع أنحاء العالم ، هل يمكنك نشر إصدار ثابت من الغزل (1.7.1 أو smth) مع إصدار مصطد من الحزمة بالداخل كما هو مقترح في https://github.com/ yarnpkg / yarn / issue / 5477 # issuecomment -396903361 من فضلك؟ 🙏

يبدو أن هذا الالتزام (من الشهر الماضي) من المفترض أن يغلق هذه المشكلة ، لكنني ما زلت أرى هذا مع العقدة 10.5.0 والغزل 1.9.0-20180621.1511 (كل ليلة). مثل حالة Gurenax ، يظهر التحذير فقط أثناء التشغيل الأولي بالنسبة لي (احذف node_modules ثم قم بتشغيل yarn ). في حال كانت مفيدة للآخرين ، فقد قمت بتضمين بعض الملاحظات المتعلقة بما وجدته / فعلته أدناه. يبدو أن تبعيات yarn قديمة حيث يمكن للمرء أن يرى مكالمات new Buffer في إصدارات JS المستقلة الحالية ليلاً.

  1. تحقق مع مشروع فارغ / صغير لمعرفة ما إذا كان التحذير مستمرًا. (على سبيل المثال ، mkdir empty-project; cd empty-project; npm init empty-project; yarn ).
  2. إذا ظهر التحذير هناك ، فقد تحتاج إلى ترقية الغزل (جرب أحدث إصدار من RC: v1.8 الرغم من أنه كان من المفترض أن يصلح الإصدار 1.7.0). في حالتي ، لم يحدث ذلك في الحالة البسيطة ، لذلك كان عليّ أن أتعمق أكثر. أولاً ، قمت بتشغيل yarn upgrade لكن هذا لا يبدو أنه يصلح.
  3. جرب الجري مع تمكين --trace-warnings ، على سبيل المثال ، 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)

في هذه المرحلة كنت في حيرة من أمري. فتح /usr/share/yarn/lib/cli.js تطل بالقرب من الخط 68827 رأيت هذا:

/* 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()
  }
}

قادني البحث في GitHub عن بعض الأجزاء الفريدة من هذا الرمز إلى اكتشاف أنه يأتي من duplexify قبل الإصدار 3.5.4. بعد ذلك قمت بتشغيل yarn why duplexify ووجدت أن إحدى تبعياتي كانت تستخدمه. ومع ذلك ، كان يستخدم v3.6.0 ، والذي لا ينبغي أن يكون لديه أي مشكلة. حاولت إضافة هذه الحزمة / الإصدار إلى مشروعي الفارغ / الحد الأدنى وإعادة تشغيل yarn . في الواقع ، عملت بشكل جيد: لا تحذيرات. بالإضافة إلى أن ذلك لا يفسر سبب إظهار التتبع لبرنامج نصي مضغوط على الويب مرتبط بـ yarn .

على الرغم من أنني لست متأكدًا من كيفية القيام بذلك ، فقد حصلت ذات مرة على سطر مختلف في تتبع التحذير ، وأشار إلى نفس ملف webpack'd cli.js ، لكن الكود الداخلي كان من sshpk (قبل # 175758 أ).

أدركت أن new Buffer يظهر في الكود في بناء JS المستقل للغزل

jacobq شكرا للنظر في هذا! لست خبيرًا في هذا - لقد صادفت للتو هذه المشكلة حرفيًا - ولكن بعد قراءة النتائج وإعادة قراءتها ، يبدو أن ما تقوله هو أن Yarn تتضمن إصدارًا قديمًا من duplexify في كود CLI الخاص به؟ هل هذا دقيق؟

ما زلت أرى هذا أيضًا.

ذهبت إلى https://nodejs.org/ الآن واكتشفت أن الإصدار الأخير هو 10.5 👀 بالفعل
في غضون ذلك ، ما زلت أنا وزملائي في 8.x لأن هذه المشكلة لا تزال مفتوحة 😅 حريصًا جدًا على استكشاف الجديد في الإصدار 10.x! 🚀 🙏

kachkaev لا تدع هذا التحذير

mcmire و يبدو أن الطريق بالنسبة لي. أظن أنهم بحاجة فقط إلى تشغيل yarn upgrade ... لتنشيط ملف القفل.

لا يزال kachkaev 8.x هو أحدث إصدار LTS حتى هذا الخريف ، لذلك لا عيب في استخدامه ، خاصة في الإنتاج. أيضًا ، كما ذكر teohhanhui ، هذا مجرد تحذير لذا فهو ليس "

jacobq توجد بالفعل بعض الحزم التي تتطلب العقدة> = 9 لكي تعمل.

كنت أستخدم العقدة 8 أيضًا بسبب هذا التحذير ، لكنني الآن مضطر لرؤيتها في كل مرة أستخدم فيها الغزل وهو أمر مخيب للآمال حقًا. يجعلني أفكر في استخدام npm بدلاً من ذلك ، لكني أحب الغزل كثيرًا ولا أريد العودة مرة أخرى. إن محاولة تجاهل هذا التحذير كل يوم أمر محزن. 😢

هل توصل أي شخص إلى حل لهذه المشكلة حتى الآن؟ من المزعج للغاية النظر في كل مرة أقوم فيها بتشغيل أمر الغزل

+1

تثبيت الغزل v1.7.0
معلومات لم يتم العثور على ملف قفل.
[1/4] حل الحزم ...
⠁ (العقدة: 12916) [DEP0005] تحذير الإيقاف: تم إهمال المخزن المؤقت () بسبب مشكلات الأمان وقابلية الاستخدام. الرجاء استخدام أساليب Buffer.alloc () أو Buffer.allocUnsafe () أو Buffer.from () بدلاً من ذلك.
في showFlaggedDeprecation (buffer.js: 159: 11)
في المخزن المؤقت الجديد (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)
في الكائن.(C: \ Program Files (x86) \ Yarn \ lib \ cli.js: 43234: 13)

كنت أعاني أيضًا من هذا على OSX الخاص بي ، ولكن:

yarn global add yarn

يبدو أنه يحلها ... أتساءل عما إذا كان الإصدار الموجود على البيرة معطلاً بطريقة ما ... 🤔

carddamom هل new Buffer يظهر 134 مرة في 7/6 كل ليلة .) لدي فضول: إذا قمت بحذف node_modules وقمت بتشغيل yarn مرة أخرى ، فهل ترى التحذير مرة أخرى؟

أدى هذا إلى إصلاح هذه المشكلة بالنسبة لي أيضًا:

image

قمت بإزالة الغزل الذي تم تثبيته مع Homebrew وأعدت تثبيته عالميًا باستخدام npm. لم نتمكن من رؤية هذه المشكلة بعد الآن ، كما اختفت بعض الأخطاء الأخرى المتعلقة بال gyp.

أتساءل عما إذا كانت النسخة الموجودة على البيرة معطلة بطريقة ما ... 🤔

سأوجه إصبعي بالتأكيد إلى Homebrew الآن.

jacobq بالنسبة لي ، لم يكن هناك node_modules لإلغاء التثبيت ، لأنني كنت أستخدم "yarn global" ، كحكاية حاولت أيضًا إعادة ربط الحزمة باستخدام البيرة وظهر الخطأ مرة أخرى ، لذلك يؤكد ذلك ...

السبب في أنك ترى التحذير فقط من إصدار tar.gz و Homebrew ( الذي يقوم فقط بتثبيت إصدار tar.gz ) هو أن Node لا ترسل تحذير الإيقاف عندما تكون الوحدة التي تسمى new Buffer داخل node_modules الدليل.

لذلك عند التثبيت عبر homebrew ، سيكون ملف الغزل القابل للتنفيذ في:

/usr/local/bin/yarn

ولكن عند التثبيت عبر npm ، فسيكون في مسار مثل (أنا أستخدم nvm هنا):

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

الرمز هو نفسه تمامًا ، والفرق الوحيد هو أنه نظرًا لتثبيته npm على دليل يحتوي على node_modules فإنه لا يصدر تحذيرًا حاليًا.

راجع isInsideNodeModules التي تم استدعاؤها داخل وحدة المخزن المؤقت الأصلية للرجوع إليها.

من مظهر الأشياء ، لا يزال lib/cli.js يحتوي على عدد من المكالمات إلى new Buffer . إنها حزمة webpack كبيرة على الرغم من أنني لا أعرف المكتبات التي أتوا منها ، ولكن يبدو أن التعليق أعلاه قد حدد الحزمة.

نعم ، فقط التأكيد على أنه لا يزال يحدث بالنسبة لي مع إصدار مستودع Debian / Ubuntu (على الأرجح للأسباب المذكورة أعلاه) ، إنه بالتأكيد لا شيء خاص بـ Homebrew.

إذا كان الأمر سيستغرق بعض الوقت لتحديث استخدامات new Buffer في التبعيات المختلفة ، فقد يكون من المفيد إيجاد طريقة لإسكات هذا التحذير المحدد في الوقت الحالي. من جانبي ، فإن إضافة العلم --no-deprecation في المكان المناسب في /usr/bin/yarn يعمل ، لكنه يشعر ببعض الاختراق والجهد.

تحرير: يمكنك أيضًا تشغيل الغزل مثل NODE_OPTIONS=--no-deprecation yarn والذي يعمل. أعتقد أنني سأقوم بتعيين ذلك كاسم مستعار.

jacobq ...
...منجز...

كحل مؤقت ، أستخدم اسمًا مستعارًا كما اقترح @ noinkling .

لأولئك الذين يستخدمون fish :

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

لا يزال هذا يحدث في 1.9.2 rc الذي يحتوي على 2f4bba1 (؟) ، على سبيل المثال

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...

باستخدام العقدة 10.6 ، macOS 10.13.6.

vieira نعم ، لسوء الحظ ، لا تزال هناك بعض الأقسام الأخرى التي تحتاج إلى الترقية لحل هذا الأمر تمامًا. انظر تعليقي هنا للحصول على قائمة بها. (البعض ينتظر العلاقات العامة ، لذا قد تتمكن من المساعدة من خلال المساهمة في هذه الجهود أو على الأقل إعطاء رد فعل +1).

تواجه نفس المشكلة
عقدة v10.7.0 ، خيوط 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 يبدو أنك تستخدم وحدة نمطية غير متوافقة في مشروعك. جرب yarn why upath ثم قم بإزالة / تحديث الجزء الذي يحضره لإزالة الخطأ.

PS + 1 / تعليقاتي أيضًا مرفوضة بشكل عام. الرجاء استخدام أزرار رد الفعل بدلا من ذلك.

jacobq تم إغلاق مشكلة GitHub هذه ، ولكن ما زلت أرى المشكلة في الإصدار 1.9.2 الأخير. أدرك أن سبب المشكلة هو التبعيات النهائية ، ولكن ليس من الواضح ما إذا كان فريق Yarn يعتقد أن هذا قد تم إصلاحه. هل من المفترض أن يتم إصلاح هذا أم أنه مغلق لأن الحل هو تعطيل التحذير؟ إن إلغاء التحذير ليس حلاً لي ولفريقي ، لأن تعطيل التحذيرات الأمنية أمر غير مقبول في سياق فريقي.

corshamax تم إصلاح هذه المشكلة المحددة لأننا قمنا بتحديث الكود الخاص بنا للتوقف عن استخدام البنية الإشكالية. لا يزال التحذير يظهر لأن بعض تبعياتنا لا تزال تستخدمه ، ولكن هذه مشكلة مختلفة (مع نفس النتيجة ، للأسف) يجب إبلاغ المشاريع ذات الصلة بها (ثم إلينا بمجرد إصدار إصدار ثابت حتى نتمكن من ترقية التبعية المتأثرة).

وبالنسبة لكل شيء ، فإننا نرحب بطلبات السحب ، لذلك إذا اكتشفت أن شيئًا ما يمكن إصلاحه ، فما عليك سوى فتح واحد وسنتأكد من دمجه للإصدار التالي. قام jacobq بعمل رائع من خلال سرد التبعيات التي قد تحتاج إلى تحديث ، وهذه نقطة انطلاق جيدة: https://github.com/yarnpkg/yarn/pull/5934#issuecomment -406346724

أرى هذه المشكلة مع العقدة v10.8.0 والغزل v1.9.4.

يبدو أنه قد تم دمج جميع العلاقات العامة المذكورة في https://github.com/yarnpkg/yarn/pull/5934#issuecomment -406346724. آمل أن يعني ذلك أنه يمكننا أن نرى إصلاحًا لهذا قريبًا.

vrobinson نعم ، يجب إصلاحها من خلال https://github.com/yarnpkg/yarn/pull/6208 - يمكنك رؤية هذا من خلال البحث في JS المستقل عن new Buffer وملاحظة أنه يظهر فقط في النسخ الاحتياطية والتعليقات. تحلى بالصبر: smile_cat:

تحديث: يبدو أنه هبط للتو: تادا: لذا راقب الليلة التالية. لكل من ساعد في تحقيق ذلك: bowing_man: شكراً: صلوا!

حصلت على هذا الخطأ ، هل تم حل هذا؟

@ rof20004 : point_up: (فوق تعليقك مباشرة) . تم دمج العلاقات العامة ، لذلك تم "إصلاحها" الآن على الفرع master من الكود المصدري. ومع ذلك ، ستستمر في رؤية هذا التحذير مع Node 10 حتى (1) يتم إصدار إصدار جديد و (2) تقوم بالترقية إلى هذا الإصدار.

jacobq أنا أستخدم حزمة

شكر :)

@ rof20004 يجب أن تكون قادرًا على البدء في استخدامه غدًا ، إذا كنت تريد ذلك ، فقط تأكد من أن لديك apt يشير إلى الليل:
https://yarnpkg.com/en/docs/install#debian -ليلة

jacobq لذلك سنرى هذه المشكلة أخيرًا تم حلها مرة واحدة للجميع باستخدام [email protected] ، صحيح؟

ربما لن يكون إصدار تصحيح ، مثل 1.10

لدي نفس المشكلة.
$ 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 $

شخص ما لديه الحل؟

@ codestart123 قرأ الخيط ، قالوا إنه تم إصلاحه ليلا ولكن لم يتم إصداره بعد.

@ codestart123 الخطأ الذي ذكرته ليس ناتجًا عن هذه المشكلة (يمكنك تجاهل تحذير الإيقاف):

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 خطأ متعلق بالشبكة (الخطأ: العنوان غير متوفر). حاول تشغيل ping registry.yarnpkg.com لتأكيد أن نظامك يمكنه حل الاسم والوصول إلى المضيف.

هل تم إصلاحه حتى الآن؟

@ ryanzhu1024 تم إصلاحه في 1.10.0 ، تم إصداره قبل أيام قليلة 👍

في انتظار إصدار الغزل ترقية العقدة.

لا أصدق أن هذا التحذير المزعج ذهب أخيرًا. شكرا لك :)

Hooraaaay 🙌 🎉 🍾

goktugyil السؤال الذي ربطته لم يذكر أي شيء yarn . إذا كنت تستخدم الغزل ، فيرجى التأكد من أن لديك أحدث إصدار (حاليًا 1.12.3 ). إذا كنت لا تستخدم yarn فالرجاء عدم النشر المتبادل هنا. يعد StackOverflow مكانًا جيدًا لطرح أسئلة البرمجة العامة ، و https://github.com/nodejs/help هو مكان جيد للذهاب لأسئلة Node. https://github.com/yarnpkg/yarn/issues مخصص لطلبات الميزات والمشكلات المتعلقة بالغزل (وليس لدعم / أسئلة التطوير العام).

arcanis / BYK / imsnif هل تمانع في قفل هذا الموضوع؟ تم إصلاح هذه المشكلة في الغزل وتبعياتها لفترة من الوقت الآن ، ولا أعتقد أن المزيد من المناقشة هنا سيفيد أي شخص.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات