Nvm-windows: لا يمكن تحديث npm (العقدة 8.4.0)

تم إنشاؤها على ٧ سبتمبر ٢٠١٧  ·  127تعليقات  ·  مصدر: coreybutler/nvm-windows

إذا كان هذا سؤالًا حول كيفية استخدام NVM4W ، فيرجى استخدام stackoverflow بدلاً من ذلك.

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

بيئتي

  • [] Windows 7 أو إصدار أقدم (غير مدعوم بالفعل بسبب موسوعة الحياة - راجع ويكي للحصول على التفاصيل)
  • [ ] ويندوز 8
  • [] Windows 8.1
  • [x] Windows 10
  • [] Windows 10 IoT Core
  • [] Windows Server 2012
  • [] Windows Server 2012 R2
  • [] Windows Server 2016

  • [] تثبيت Windows الخاص بي بلغة غير الإنجليزية.

أنا أستخدم إصدار NVM4W:

  • [] 1.1.6
  • [x] 1.1.5
  • [] 1.1.4
  • [] 1.1.3
  • [] 1.1.2
  • [] 1.1.1
  • [ ] اكبر سنا
  • [ ] غير ذلك (يرجى التحديد)

فعلت مسبقا...

  • [x] اقرأ README لتكون على دراية بمشاكل npm gotchas ومكافحة الفيروسات.
  • [] راجع موقع wiki للتأكد من أن مشكلتي لم يتم حلها بالفعل.
  • [x] تحقق من أنني أستخدم حسابًا بامتيازات إدارية.
  • [x] بحث في المشكلات (مفتوحة ومغلقة) للتأكد من أن هذه ليست مكررة.
  • [] تأكد من أن هذا ليس سؤالًا حول كيفية استخدام NVM لنظام التشغيل Windows ، حيث يتم استخدام gitter للأسئلة والتعليقات.

مشكلتي متعلقة بـ (حدد فقط تلك التي تنطبق):

  • [] settings.txt
  • [] دعم الوكيل (هل جربت الإصدار 1.1.0+؟)
  • [] دعم 32 أو 64 بت (هل جربت الإصدار 1.1.3+؟)
  • [] شخصية تهرب (هل جربت الإصدار 1.1.6+؟)
  • [x] بيئة غلاف قياسية (طرفية / بوويرشيل)
  • [] بيئة غلاف غير قياسية (Cmder ، Hyper ، Cygwin ، git)

سلوك متوقع

يجب أن يقوم npm i -g npm @ الأحدث بتثبيت أحدث إصدار npm

السلوك الفعلي

خطا:
npm ERR! path C:\Program Files\nodejs\npm.cmd npm ERR! code EEXIST npm ERR! Refusing to delete C:\Program Files\nodejs\npm.cmd: is outside C:\Program Files\nodejs\node_modules\npm and not a link npm ERR! File exists: C:\Program Files\nodejs\npm.cmd npm ERR! Move it away, and try again.

خطوات إعادة إظهار المشكلة:

تشغيل كمسؤول npm i -g npm@latest

help wanted

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

قمت فقط بإزالة ملفات npm و npm.cmd من موقع nodejs ، ونقل dir node_modules/npm من موقع nodejs إلى موقع آخر ، وتشغيل node npm-cli.js i -g npm@latest داخل bin dir في المجلد المنقول.

ال 127 كومينتر

نفس المشكلة هنا.

واجهت نفس المشكلة ، وإليك كيفية تجاوزها:

قم بتشغيل npm install -g npm وأثناء تشغيله :
إزالة (النسخ الاحتياطي) الملفات npm.cmd و npm من c:\Program Files\nodejs\
إزالة (نسخة احتياطية) .bin المجلد من c:\Program Files\nodejs\node_modules\npm\node_modules ، ثم يجب أن ينجح
إذا كانت لديك مشكلات في Refusing to delete مع أي وحدة npm أخرى files/folders عليك فقط إزالة هذه المشكلات وإعادة تشغيل عملية التحديث. لإعادة التشغيل ، انسخ npm.cmd إلى c:\Program Files\nodejs\ . ثم بمجرد تشغيل npm install -g npm ، قم بإزالة npm.cmd ، وإلا ستدخل إلى مشكلة Refusing to delete npm.cmd ، يمكنك تكرار هذه العملية حتى يصبح npm install -g npm سعيدًا.

لإزالة الملفات يمكنك استخدام هذا الاختصار: mv npm.cmd "c:\Program Files\nodejs\node_modules\npm\node_modules" كما اقترحهfarnetani

حسدتي:
windows 7 x64, node 8.4, nvm 1.1.6

image

رؤية نفس المشكلة

أنفسهم
نوافذ 10
عقدة 8.5.0
فوق مستوى سطح البحر 5.3.0
nvm 1.1.0

تضمين التغريدة
الحل الأسهل هو نسخ dir node_modules/npm من موقع nodejs ، وإزالة npm bin و cmd ، وتشغيل node npm-cli.js i -g npm@latest داخل bin dir في المجلد المنسوخ.

الكثير من أجل الإنتاج. نتمنى لك التوفيق في النص.

يجب عليهم إعادة تسمية التكامل المستمر إلى الكسر الداخلي المستمر

@ 19majkel94 لم أستطع جعلها تعمل مع طريقتك ... أي أفكار أخرى يمكنني

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

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

أتمنى أن أتمكن من المساعدة ، ولكن لدي ملاحظة ... أعتقد أن المشكلات مرتبطة باختصار " C:/Program Files/nodejs ". ربما إذا تم استخدام تقاطع طرق بدلاً من الاختصار؟ لا يستطيع Windows معرفة الفرق بين دليل "حقيقي" وتقاطع. لذلك ، يبدو أن العقدة قد تم تثبيتها حقًا في الدليل الافتراضي. لا مزيد من "التشغيل" في دليل خارج الدليل الذي تم حله.

https://docs.microsoft.com/en-us/sysinternals/downloads/junction

راجع للشغل ، استخدام تقاطع يجب أن يثبت مستقبلاً nvm4w ضد أي تغييرات مستقبلية لسلوك npm.

@ واين أوسمي
هل قرأت التمهيدي؟

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

من أجل إنشاء / تعديل ارتباط رمزي ، يجب أن تعمل كمسؤول ، ويجب عليك الالتفاف حول Windows UAC (هذا الطلب المزعج). لحسن الحظ ، هذا هو التحدي الذي قمت بحلته بالفعل مع بعض البرامج النصية المساعدة في نوافذ العقد. نتيجة لذلك ، يحتفظ NVM لـ Windows بارتباط رمزي واحد يتم وضعه في نظام PATH أثناء التثبيت فقط. التبديل إلى إصدارات مختلفة من العقدة هو مسألة تبديل هدف الارتباط الرمزي. نتيجة لذلك ، لا تتطلب منك هذه الأداة تشغيل nvm use xxx في كل مرة تفتح فيها نافذة وحدة التحكم. عند تشغيل nvm use xxx ، يتم تحديث الإصدار النشط من العقدة تلقائيًا عبر جميع نوافذ وحدة التحكم المفتوحة. كما أنه يستمر أيضًا بين عمليات إعادة تمهيد النظام ، لذلك لا تحتاج إلا إلى استخدام nvm عندما تريد إجراء تغيير.

@ 19majkel94
من فضلك اقرأ عن التقاطعات. يحتوي اختصار النافذة "symlink" المعروف أيضًا على مشاكل في إعادة تحليل الدليل الهدف من العمليات. بينما يبدو أن مستكشف النوافذ والمحطة الطرفية يتعاملان معها بشكل جيد ، إلا أنه لا يتم التعامل معها بشكل جيد في العمليات الأخرى. افتح المفكرة ، واختر ملفًا مفتوحًا للحصول على مربع حوار ملف النافذة القياسي. انتقل إلى "C:/Program Files/nodejs" وانظر إلى أين ستنتهي.

يمكن أن يؤدي إعادة التوجيه إلى الدليل الهدف ، والذي كما نرى حيث تنتهي العمليات ، إلى بعض المشكلات المثيرة للاهتمام.

الوصلات هي ما يعادل الروابط الصلبة في * لا شىء. يدعم Windows هذه الأدلة فقط ، وليس الملفات ، ولكن هذا كل ما نحتاجه هنا. هم لا يعيد توجيه. إنها ، لجميع المقاصد والأغراض ، الدليل ، لا تختلف عن المسار الذي تم إنشاؤه عند إنشاء الدليل لأول مرة.

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

هذا ليس له علاقة بالوصلات / الروابط الصلبة / الروابط الرمزية. قدم kuncevic لقطة شاشة تشير إلى أخطاء npm ، والجزء الأساسي هو Refusing to delete ... which is outside of .... . هذه رسالة مضمنة في npm ، تمنع المزيد من العمليات. الخلاصة: npm ترفض التحديث الكامل لنفسها.

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

إذا كنت في حاجة ماسة إلى تحديث npm ، فيمكنك تنزيله عبر https://github.com/npm/npm/archive/vX.X.X.zip واستخراجه في الدليل node_modules لجذر تثبيت العقدة. ستحتاج إلى إنشاء ارتباط رمزي يدويًا في جذر تثبيت العقدة_ إلى npm.cmd و npx.cmd . يجب أن يبدو هيكل الملف النهائي كما يلي:

nvm
- v8.5.0
   - node_modules
       - npm
          - bin
               - npm.cmd
               - npx.cmd
          ...
   - node.exe
   - npm.cmd (symlink to v8.5.0/node_modules/npm/bin/npm.cmd)
   - npx.cmd (symlink to v8.5.0/node_modules/npm/bin/npx.cmd)

حسنًا ، أعتقد أنني يجب أن أحاول قبل البيع. لقد استبدلت الاختصار بـ
مفرق ، وحصلت على نفس المشكلة بالضبط. اعتقدت أن لدي شيء هناك.
اسف لتضييع وقتك.

يوم الأربعاء ، 27 سبتمبر ، 2017 الساعة 9:38 صباحًا ، كوري بتلر إخطارات @github.com
كتب:

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

لا يبدو أن هذه مشكلة حتى npm 5.xx ، وما زلت أحفر
من خلال التفاصيل لمعرفة ما الذي تغير. قد أضطر إلى كتابة أ
الحل البديل (أي الاختراق) ، الذي لا أحبه أبدًا. أنا أيضا أبحث في
باستخدام حزم msi ، والتي يبدو أنها الطريقة الوحيدة للحصول على ملف
انتباه الناس في npm.

إذا كنت في حاجة ماسة إلى تحديث npm ، يمكنك تنزيله عبر
https://github.com/npm/npm/archive/vX.XXzip واستخرجه في
node_modules لجذر تثبيت العقدة. ستحتاج إلى
إنشاء ارتباط رمزي يدويًا في جذر تثبيت العقدة إلى npm.cmd و
npx.cmd. يجب أن يبدو هيكل الملف النهائي كما يلي:

nvm

  • الإصدار 8.5.0

    • node_modules



      • npm





        • سلة مهملات







          • npm.cmd




          • npx.cmd




            ...










    • node.exe

    • npm.cmd (ارتباط رمزي بـ v8.5.0 / node_modules / npm / bin / npm.cmd)

    • npx.cmd (ارتباط رمزي بـ v8.5.0 / node_modules / npm / bin / npx.cmd)

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/coreybutler/nvm-windows/issues/300#issuecomment-332523342 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AEZgRbY_GVys0bfnD_kaM_PYl6QUmZKDks5smk_PgaJpZM4PPcf-
.

تم للتو تحديث 5.4.1 → 5.4.2 بدون مشاكل.

c:\>npm install npm -g
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
C:\Program Files\nodejs\npm -> C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
+ [email protected]
removed 1 package and updated 2 packages in 12.125s

kuncevic - شكرًا ... هذا يدل على أن المشكلة يجب أن تكون في نطاق npm 5.4.3+.

npm -g install [email protected] لا يزال يفشل بالنسبة لي ، نفس الأخطاء.
[تحرير] راجع للشغل ، هذا يبدأ من 5.3.0 ، والذي تم تثبيته مع تثبيت nvm 8.5.0

يوم الجمعة ، 29 سبتمبر 2017 الساعة 11:41 صباحًا ، كوري بتلر [email protected]
كتب:

kuncevic https://github.com/kuncevic - شكرا ... هذا يدل على
يجب أن تكون المشكلة في نطاق npm 5.4.3+.

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/coreybutler/nvm-windows/issues/300#issuecomment-333161774 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AEZgRQnw_jxuz_dDZl3OsZVO_MNkHlBGks5snQ-qgaJpZM4PPcf-
.

بالنسبة لي فشل من Node 8.4.0 وما فوق. يقوم بتثبيت NPM 5.3.0 ، ثم لن يسمح لي بترقيته.
تسمح إصدارات Node القديمة (لديّ 4.8.4) بتحديث NPM بشكل طبيعي.

رجل. تمتص npm 5 و nvm وقتًا كبيرًا حقًا (لكني ألوم npm 5 هنا لأن 4 تعمل بشكل جيد تمامًا). لقد قمت بخفض إصداره إلى npm 4.6.1 الأسبوع الماضي وحاولت فقط إعطاء 5.4.2 محاولة أخرى. يبدو أنه تم إلغاء تثبيت npm أثناء محاولة تثبيت رد فعل أصلي ، حزمة مختلفة تمامًا:

Manuel@Manuel-406 /cygdrive/d/htdocs/wallet
$ npm install -g react-native-cli
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
npm WARN Error: EPERM: operation not permitted, scandir 'C:\Program Files\nodejs\node_modules\npm\node_modules\libnpx\node_modules\yargs\node_modules\os-locale\node_modules\execa\node_modules\cross-spawn\node_modules\shebang-command\node_modules'
npm WARN  { Error: EPERM: operation not permitted, scandir 'C:\Program Files\nodejs\node_modules\npm\node_modules\libnpx\node_modules\yargs\node_modules\os-locale\node_modules\execa\node_modules\cross-spawn\node_modules\shebang-command\node_modules'
npm WARN   stack: 'Error: EPERM: operation not permitted, scandir \'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\libnpx\\node_modules\\yargs\\node_modules\\os-locale\\node_modules\\execa\\node_modules\\cross-spawn\\node_modules\\shebang-command\\node_modules\'',
npm WARN   errno: -4048,
npm WARN   code: 'EPERM',
npm WARN   syscall: 'scandir',
npm WARN   path: 'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\libnpx\\node_modules\\yargs\\node_modules\\os-locale\\node_modules\\execa\\node_modules\\cross-spawn\\node_modules\\shebang-command\\node_modules' }
npm ERR! path C:\Program Files\nodejs\npm
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall open
npm ERR! Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!  { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!      errno: -4048,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'open',
npm ERR!      path: 'C:\\Program Files\\nodejs\\npm' },
npm ERR!   stack: 'Error: EPERM: operation not permitted, open \'C:\\Program Files\\nodejs\\npm\'',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'open',
npm ERR!   path: 'C:\\Program Files\\nodejs\\npm',
npm ERR!   parent: 'v8.5.0' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Manuel\AppData\Roaming\npm-cache\_logs\2017-10-02T14_54_04_833Z-debug.log

Manuel@Manuel-406 /cygdrive/d/htdocs/_git/wallet
$ npm install -g react-native-cli
sh: npm: Kommando nicht gefunden.
  • ubuntu : 16.04.2 LTS
  • nodejs : 8.6.0
  • npm : 5.3.0
npm i -g npm<strong i="15">@latest</strong>

/home/user/.npm-global/bin/npm -> /home/user/.npm-global/lib/node_modules/npm/bin/npm-cli.js
/home/user/.npm-global/bin/npx -> /home/user/.npm-global/lib/node_modules/npm/bin/npx-cli.js
+ [email protected]
added 68 packages, removed 164 packages and updated 14 packages in 14.307s

لا يزال npm -v يطبع 5.3.0 ولم يتم تحديثه؟

yavorski - هذا هو nvm لنظام التشغيل Windows. أعتقد أنك تريد nvm لـ * لا شىء .

لقد أكدت أن هذه المشكلة هي وضع الحماية داخل npm 5.xx لم تكن الإصدارات السابقة من npm تحتوي على هذا. لسوء الحظ ، فإن الإصلاح ليس تافهاً ، واستناداً إلى تجربة yavourski ، فهو ليس خاصًا بهذا المشروع.

نعم لا nvm في حالتي. Linux + Nodejs من مصدر العقد.

وجود نفس المشكلة هنا ...

إصدار npm 5.4.2
إصدار العقدة 8.7.0
نافذة 10

لدي نفس المشكلة.

نظام التشغيل Windows 10
mv npm.cmd "c:\Program Files\nodejs\node_modules\npm\"

و بعد

npm i -g npm@latest

حل لي!

لدي سلوك مماثل مع Node v8.9.0. يأتي مع npm 5.5.1 ، وعندما أحاول الرجوع إلى إصدار npm 4 ، فإنه يعطيني الخطأ refusing to delete .

حاولت إصلاح هذا يدويًا ، عن طريق سحب npm من ملف zip الرسمي ، وتلقيت هذا الخطأ:
image

أظن أن هذا الخطأ يحدث بصمت ويفسد التثبيت. عندما أقوم بالتثبيت على C:\nvm ، لا أحصل على هذا الخطأ ويعمل كل شيء كما هو متوقع.

RichardMisiak هل حاولت نقل تثبيت nvm إلى مسار أقرب إلى C:\ ؟ مثل C:\nvm ؟ لقد أوضح المشكلة بالنسبة لي.

مع أحدث عقدة 9.1 التي جلبت أحدث npm 5.5.1 بشكل افتراضي ، هناك المزيد من "المرح" https://github.com/npm/npm/issues/19019 ، مع الإشارة إلى npm التالي الافراج عنه قد يكون ثابتا.

الحل الخاص بي ليس أنيقًا جدًا ولكنه يعمل. ها هو.
بعد تشغيل npm install [email protected] -g حصلت على الخطأ التالي:

npm ERR! path d:\node\npm.cmd
npm ERR! code EEXIST
npm ERR! Refusing to delete d:\node\npm.cmd: is outside d:\node\node_modules\npm and not a link
npm ERR! File exists: d:\node\npm.cmd
npm ERR! Move it away, and try again.
...

كان الحل البديل الخاص بي كما يلي:

  1. npm install -g yarn
  2. إعادة تشغيل الكمبيوتر
  3. قم بتشغيل yarn global bin ، وأضف المجلد المعروض إلى متغير PATH env لنظام Windows
  4. انتقل إلى المجلد الذي يوجد به npm.cmd (تحقق من هذا من الخطأ الذي حصلنا عليه للتو في npm install [email protected] -g run: d:\node\ في حالتي) و:
    2.1. أعد تسمية npm إلى npm.original (أو احذفه فقط)
    2.1. أعد تسمية npm.cmd إلى npm.cmd.original (أو احذفه فقط)
  5. أغلق المحطة وافتح واحدة جديدة
  6. yarn global add [email protected]
  7. npm install [email protected] -g (سيؤدي هذا إلى تثبيت npm باستخدام إصدار npm الموجود في المجلد yarn global bin )
  8. yarn global remove npm (لحذف إصدار npm المثبت بواسطة الغزل ، والاحتفاظ فقط بالإصدار المثبت بواسطة npm نفسها)

ما عليك سوى إعادة تسمية الدفعة قبل الترقية:
تشغيل كمد

cd %ProgramFiles%\nodejs
ren npm.cmd npm2.cmd
ren npm npm2 
npm2 install npm<strong i="7">@latest</strong> -g

احذف الملفات بعد الترقية:

del npm2
del npm2.cmd

@ rolf-schmidiger في تجربتي ، كان علي أن أفعل نفس إعادة التسمية باستخدام npx و npx.cmd كما هو الحال مع npm و npm.cmd.

لذيذ وبسيط وفعال ، @ rolf-schmidiger. شكرا لك.

coreybutler ، أي فكرة عن حل؟ فضولي فقط. لا ضغط.

لم يعمل أي من الحلول المدرجة هنا بالنسبة لي ، وفي النهاية كان من الأسرع استخدام nvmw uninstall لحذف تثبيت Node ثم إعادة تثبيت Node nvmw install .

أليست nvmw أداة مختلفة تمامًا؟

تضمين التغريدة أنت على حق. من المثير للاهتمام أن نفس المشكلة تحدث على حد سواء!

بناءً على إجابة @ rolf-schmidiger ، قمت بإنشاء برنامج نصي للتحديث له ... تمتص Kinda أن هذه هي الطريقة الوحيدة التي يمكنني من خلالها تشغيله.

#!/usr/bin/bash

cd "$PROGRAMFILES"/nodejs
mv npm.cmd npm2.cmd
mv npm npm2
npm2 install -g npm<strong i="6">@latest</strong>
rm npm2
rm npm2.cmd

تحديث

هذا هو آخر ما يعمل معي.

#!/usr/bin/bash

cd "$PROGRAMFILES"/nodejs
rm npm npx npm.cmd npx.cmd
mv node_modules/npm node_modules/npm2
node node_modules/npm2/bin/npm-cli.js i -g npm<strong i="12">@latest</strong>
rm -rf node_modules/npm2/

لقد قمت للتو بتثبيت كل شيء لأول مرة ، لذلك لا يبدو أن أيًا من الاقتراحات المذكورة أعلاه تنطبق علي. أستمر في الحصول على هذا عند محاولة تنفيذ npx create-react-app :

npx : The term 'npx' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.

Windows 10 Pro ، الإصدار 1703 ، تمت إعادة تثبيته منذ حوالي أسبوعين مع تمكين وضع المطور
إصدار العقدة 9.4.0
نانوثانية في الدقيقة 5.6.0

كانت إرشادات التثبيت مربكة بعض الشيء (هناك ملفات متعددة لتنزيلها ، ما هو ملف عدم التثبيت هذا؟) لكنني اكتشفت أخيرًا أنه يجب عليك تشغيل nvm ثم إصدار الأمر "use" (مرتبك) أنا لأنني لا أستخدم مدير حزم منفصل لذلك اعتقدت أن هذا الجزء لم ينطبق) ولكن بعد ذلك ما زلت أتلقى الخطأ أعلاه.

حاولت كل شيء ممكن. لقد قمت بإلغاء تثبيت nvm وقمت بتثبيت إصدار مختلف ، وتحققت من مسار البيئة ، ونفدت الأفكار. أخيرًا فعلت للتو npm install -g npx ويبدو أن هذا يعمل. تبا له.

قمت فقط بإزالة ملفات npm و npm.cmd من موقع nodejs ، ونقل dir node_modules/npm من موقع nodejs إلى موقع آخر ، وتشغيل node npm-cli.js i -g npm@latest داخل bin dir في المجلد المنقول.

واجهت نفس المشكلة (بيئة Windows 10) عند محاولة ترقية عقدي 8.8.0 مع npm 5.5.1 إلى العقدة 9.8.0 ولكن تثبيت العقدة 9.8.0 لا يؤدي إلى تحديث npm من 5.5.1 إلى الأحدث. بعد ذلك أحاول npm i -g npm وأحصل على خطأ:

C:\Repository\myproject>npm i -g npm
npm WARN npm npm does not support Node.js v9.8.0
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8.
npm WARN npm You can find the latest version at https://nodejs.org/
WARNING: You are likely using a version of node-tar or npm that is incompatible with this version of Node.js.
Please use either the version of npm that is bundled with Node.js, or a version of npm (> 5.5.1 or < 5.4.0) or node-tar (> 4.0.1) that is compatible with Node.js 9 and above.
npm[19860]: src\node_zlib.cc:436: Assertion `args.Length() == 7 && "init(windowBits, level, memLevel, strategy, writeResult, writeCallback," " dictionary)"' failed.
 1: node::DecodeWrite
 2: node::DecodeWrite
 3: uv_loop_size
 4: v8::internal::wasm::SignatureMap::Find
 5: v8::internal::Builtins::CallableFor
 6: v8::internal::Builtins::CallableFor
 7: v8::internal::Builtins::CallableFor
 8: 000003BEBC8843C1

نجح حل

الأمر بسيط جدًا .. إذا كنت تستخدم نظام التشغيل windows ، فيرجى مراجعة https://github.com/felixrieseberg/npm-windows-upgrade
إذا كنت تريد القيام بذلك يدويًا ، فيرجى التحقق من الوثائق https://github.com/npm/npm/wiki/Troubleshooting#upgrading -on-windows

جمعت نصًا برمجيًا من PowerShell لأتمتة حل arfaWong : https://gist.github.com/noahleigh/ba34e18b3e0bc4a6a4e93ed7a480536e

تم الاختبار على PowerShell Core 6.0

نفس المشكلة مع

node-v8.6.0-win-x64
node-v9.9.0-win-x64

وإذا قمت بإعادة تسمية الملف أو نقله ، فسوف يفشل إذا لم يتمكن من إنشاء المجلد ، يرجى إعادة التشغيل كمسؤول. بداية من حقيقة أنني لا أمتلك حقوق المسؤول على هذا الجهاز ، فمن المشكوك فيه أن هذا سيغير أي شيء ، لأن المستخدم الحالي لديه أذونات mkdir في هذا المجلد ...

متى سيتم إصلاح ذلك؟

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

لقد استخدمت cmder و nvm 1.1.6 والعقدة 8.10.0
تم التحديث من npm 5.6.0 إلى 5.8.0: tada:

cd %programfiles%/nodejs
rm npm npm.cmd
mv node_modules/npm node_modules/npm2
node node_modules\npm2\bin\npm-cli.js i npm<strong i="17">@latest</strong> -g
rm -rf npm2

شكرا لحلكayvarot
لقد استخدمت nvm 1.1.15 والعقدة 9.8.0
تم التحديث من 5.6.0 إلى 5.8.0

الحل من قبل ayvarot يعمل بشكل جزئي بالنسبة لي. ربما يرجع ذلك إلى حقيقة أنني كنت أقوم بتشغيله على msys git bash مع ConEmu؟ على أي حال ، هذا هو المقتطف المعدل الخاص بي:

which npm && \
    cd "`which npm | xargs -0 dirname`" && \
    mv npm npm2 && \
    mv npm.cmd npm2.cmd && \
    mv ./node_modules/npm ./node_modules/npm2 && \
    node node_modules/npm2/bin/npm-cli.js i npm<strong i="7">@latest</strong> -g && \
    rm -r npm2 npm2.cmd ./node_modules/npm2

npm -v

(باستخدام nvm 1.1.6 على العقدة 8.10.0 x32 والتحديث من npm 5.6.0 إلى 5.8.0)

arfaWong التي
سأنتظر حتى يقوم فريق npm بإصلاحه ...
.
تواجه هذا مع npm 5.6.0

نسخة عادية من Windows DOS من ayvarot

pushd %ProgramFiles%\nodejs
del npm npm.cmd
move node_modules\npm node_modules\npm2
node node_modules\npm2\bin\npm-cli.js i npm<strong i="8">@latest</strong> -g
rd node_modules\npm2 /S /Q
popd

arfaWong حل يعمل مثل السحر ، شكرا لك!

نظام التشغيل Windows 10:
cd (مجلد nodejs الخاص بك)
رن npm.cmd npm2.cmd
ديل npm
ديل npx

npm2 تثبيت npm -g

ديل npm2.cmd

لقد قمت للتو بإعادة تسمية npm و npx بالمناسبة ، ثم قمت بحذفهما بعد ذلك ، لكنني أعتقد أنه يمكن حذفهما على الفور.

يبدو أن هذا قد تم تشغيله الآن عن طريق تثبيت Nodejs الإصدار 10.0.0 باستخدام nvm.

arfaWong الحل الوحيد الذي

@ عمل رولف شميدجر بالنسبة لي! شكرا لك

لقد تمكنت من التغلب على هذا باستخدام الغزل الذي قمت بتثبيته بالفعل.

nvm use 10.0.0

# Have npm remove itself
npm uninstall -g npm

# Install npm into the yarn directory structure
yarn global add npm

# Use npm to install itself into the nodejs directory structure
npm install -g npm

# Remove the yarn installation of npm
yarn global remove npm

نجح هذا بالنسبة لي:

nvm use <some_other_version>
cd .../nvm/<version_to_update>
npm un npm
npm i npm<strong i="6">@latest</strong>

استخدم الغزل بدلاً من npm ، جرب yarn global add npm@latest ، حاول ترقية الغزل إذا فشل ذلك.

حصلت أيضًا على خطأ رفض الحذف عند محاولة تحديث npm باستخدام npm install npm<strong i="6">@latest</strong> --global .

لم تتمكن حزمة npm-windows-Upgrade من التحديث أيضًا ، مما يشير إلى إعادة تثبيت Node.js ، على الرغم من كون هذا تثبيتًا جديدًا لفك الضغط.

تمكنت من الترقية عن طريق نقل ملفات npm و npx ، كما هو مقترح سابقًا ، باستخدام برنامج PowerShell النصي:

# Locate the Node.js installation
# containing the npm and npx files that are preventing the upgrade
Get-Command node.exe | % { Split-Path $_.Source } | cd

$CurrentNpmVersion = npm --version

# Version the current npm scripts to make room for the new version:
"npm", "npm.cmd", "npx", "npx.cmd" | %{ Get-ChildItem -Filter $_ } |
  Rename-Item -NewName { "$($_.BaseName)-$CurrentNpmVersion$($_.Extension)" }

# Use the current npm command to install the new version:
Invoke-Expression "npm-$($CurrentNpmVersion).cmd install npm<strong i="11">@latest</strong> --global"

مرحبًا awarberg لقد جربت البرنامج النصي الخاص بك ولكني حصلت على هذا الخطأ. حاولت مع الغزل كذلك ، لا حظ ... ويندوز غبي! 💢

.\update_node.ps1
npm ERR! path C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno
npm ERR! code EEXIST
npm ERR! Refusing to delete C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno: is outside C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\errno and not a link
npm ERR! File exists: C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno
npm ERR! Move it away, and try again.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\vitom\AppData\Roaming\npm-cache\_logs\2018-05-11T12_55_55_902Z-debug.log

lamuertepeluda آسف لسماع أنك لا تزال غير قادر على الترقية. الملف المذكور ...\node_modules\.bin\errno لم يذكر سابقا. قد يكون هذا تثبيتًا تالفًا بسبب محاولات ترقية متعددة. قد يكون الوقت مناسبًا لإعادة تثبيته ، كما تقترح ترقية npm-windows.

أما بالنسبة لـ "النوافذ الغبية" فأنا لا أوافق. على الأرجح ، تم تصميم NPM لنظام Linux أولاً ، وتم دعم دعم Windows لاحقًا ، على سبيل المثال. أرى هذا بانتظام في حزم NPM الأخرى أيضًا. تتمثل المشكلات النموذجية في صعوبة التثبيت وتتطلب خطوات يدوية وغير موثقة لضمان المتطلبات الأساسية للبرنامج. مشكلة أخرى شائعة هي تتبع نظام الملفات الحساسة لحالة الأحرف.

لقد أنشأت برنامج نصي دفعي لتشغيل حل

<strong i="7">@echo</strong> off
SETLOCAL EnableDelayedExpansion

if [%1] == [] (
    echo Pass in the version you would like to install, or "latest" to install the latest npm version.
) else (
    set wanted_version=%1

    if "!wanted_version!" == "latest" (
        for /f %%i in ('npm show npm version') do set wanted_version=%%i
    )

    for /f %%i in ('npm -g -v') do set cur_version=%%i

    if "!cur_version!" == "!wanted_version!" (
        echo Already on npm version !wanted_version!.
    ) else (
        echo Updating to !wanted_version!...

        set node_path=!PROGRAMFILES!\nodejs

        rename "!node_path!\npm" npm2
        rename "!node_path!\npm.cmd" npm2.cmd
        rename "!node_path!\node_modules\npm" npm2
        node "!node_path!\node_modules\npm2\bin\npm-cli.js" i npm@!wanted_version! -g

        for /f %%i in ('npm -g -v') do set new_version=%%i

        echo New version installed is !new_version!

        if "!new_version!" == "!wanted_version!" (
            echo Successfully updated to !wanted_version!. Cleaning up backups...
            del "!node_path!\npm2"
            del "!node_path!\npm2.cmd"
            <strong i="8">@RD</strong> /S /Q "!node_path!\node_modules\npm2"
            echo Update complete.
        ) else (
            echo Something went wrong. Rolling back.
            if exist "!node_path!\npm" (
                del "!node_path!\npm"
            )
            if exist "!node_path!\npm.cmd" (
                del "!node_path!\npm.cmd"
            )
            if exist "!node_path!\node_modules\npm" (
                <strong i="9">@RD</strong> /S /Q "!node_path!\node_modules\npm"
            )
            rename "!node_path!\npm2" npm
            rename "!node_path!\npm2.cmd" npm.cmd
            rename "!node_path!\node_modules\npm2" npm
        )
    )
)

لقد أنشأت جوهرًا من

https://gist.github.com/johnmcase/d31b799b9030327091a0e74880e4c530

- تحرير: تم التحديث ليعكس نصkufii المحدث أعلاه

johnmcase فكرة جيدة ، لقد قمت بتحديث تعليقي حتى تتمكن من تمرير الإصدار الذي تريد تثبيته كوسيطة (أو "الأحدث" للحصول على أحدث إصدار)

النسخة المحدثة من kufii تعمل بشكل أفضل بالنسبة لي من الحصول على الرقم المطلوب في البرنامج النصي.

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

شكرا لك!!
notworthy

johnmcase عمل أحب سحر ، إشارة مرجعية.

تم العثور على مشكلة واحدة فقط مع هذا البرنامج النصي: عندما اخترت تثبيت 5.6 ، نجحت في تثبيت 5.6.0 وتم التراجع إلى الإصدار السابق حيث يختلف "5.6" عن "5.6.0" ...
شكرا لك على السيناريو رغم ذلك!

واجهت نفس المشكلة مرة أخرى مؤخرًا مع إصدار nvm 1.1.7
نجح حل ayvarot في المرة الأخيرة. لكن هذه المرة لم يتم العثور على مجلد npm. لذلك أوصي بعدم حذف مجلد npm2 في حالة حدوث ذلك.

لقد أمضيت ما يقرب من يومين في تصحيح الأخطاء التي تسببها هذه المشكلة وحاولت تقريبًا كل إصلاح لترقية NPM من 5.6.0 إلى 6.1.0. نجح إصلاح

arfaWong يعمل !!

لقد تناولت طريقة الغزل ، ولكن هذا يجب أن يعمل أيضًا:

  1. احصل على npm من https://github.com/npm/cli/releases
  2. قم بتشغيل ما يلي من الدليل الذي استخرجته إليه من مجلده bin

    • node npm-cli.js i -g npm@latest

    • قد يشكو من الملفات التي يجب حذفها ، بالنسبة لي كان لدي nvm و nodejs في دليل جذر على محرك الأقراص الخاص بي ، لذا فإن موقع ملف البرنامج القياسي غير قابل للتطبيق بالنسبة لي. لقد قمت بإدخال npm / npx / node_modules من مجلد nodejs الخاص بي (لا أخشى إعادة تنزيل الحزم وأعمل على تثبيت جديد الآن على أي حال).

  3. يجب تثبيته بشكل صحيح ويجب أن تكون قادرًا على حذف المجلد الذي استخرجته والربح!

تشبه إلى حد ما هذا التدفق التراكمي الذي كتبته.
https://stackoverflow.com/questions/49748307/how-to-reinstall-npm

ayvarot شكرا جزيلا !!!!!!!! تعمل نصيحتك بالنسبة لي على نظام التشغيل Windows 10.

عملت معي بإعادة تسمية %Node%\npm.cmd و %Node%\npm و %Node%\npx.cmd ، ولم تكن هناك حاجة

يعمل الحل المقترح من peternann هنا أيضًا.
https://github.com/coreybutler/nvm-windows/issues/389

لسبب ما ، لم يكن البرنامج النصي أعلاه مناسبًا لي وكنت ببساطة متعبًا جدًا من حل هذا لمعرفة السبب.

لا يزال هذا الخطأ السخيف قائمًا ، لذلك قمت بعمل نص يقوم بهذه المهمة. يجب وضعه داخل مجلد Node حيث يوجد npm.cmd .

:: Update NPM with workaround of "npm ERR! code EEXIST" bug https://github.com/coreybutler/nvm-windows/issues/300

<strong i="7">@ECHO</strong> OFF

SETLOCAL

SET CDir=%~dp0%

REN "%CDir%\npm.cmd" "npm1.cmd"
DEL "%CDir%\npm"
DEL "%CDir%\npx.cmd"
DEL "%CDir%\npx"

CALL "%CDir%\npm1.cmd" update && DEL "%CDir%\npm1.cmd"

احفظ هذا كـ npmup.cmd واستخدمه بدلاً من npm update

عند استخدام سكريبتkufii
لاحظ أنه يجب استبدال موقع التثبيت إذا قمت بتغيير مسار node.js مثلي ، فقط استبدل الرمز set node_path=!PROGRAMFILES!\nodejs إلى set node_path=YOUR_NODE_PATH

لا يعمل حل kraihn الآن مع أحدث خيوط الغزل إلا إذا قمت بإضافة سلة الغزل في المسار:

  1. احصل على الصندوق path بـ yarn global bin
  2. ألصق سلة الغزل path في المتغير path

مرة واحدة في العام أشعر بالإثارة ، قررت تثبيت NVM على Windows معتقدًا "هذه المرة ستنجح" ، ولكن هناك دائمًا شيء معطل ... حسنًا ، أعتقد أنه عاد إلى برنامج التثبيت الكلاسيكي Node.js. سأستخدم WSL ، لكن للأسف بعض تطبيقات Electron تتطلب منك تثبيت Node على نظام التشغيل المضيف.

هل هذا غير قابل للإصلاح حقًا بواسطة NVM وحدها؟
بقدر ما قرأت في سلاسل مختلفة ، ستكون أيضًا مشكلة في npm أو Node ، لكن ألا يوجد أي شيء يمكن أن يفعله NVM حيال ذلك؟ خلاف ذلك ، فإن هذا النوع من المشكلة يجعل NVM عديم الفائدة على Windows.
إن الاضطرار إلى حذف الملفات بأنفسنا أثناء عملية التحديث أو حتى إنشاء برامج نصية لذلك أو أي حلول بديلة ذكرها بعض الأشخاص ، ليس حلاً. إنه الجحيم!
الشيء الوحيد الذي جربته (تعليق في سلسلة رسائل أخرى ، وليس هذا ، مع ذكر بعض الخطوات حول كيفية استخدام الغزل لإضافة npm) لم ينجح.

MrCroft بينما أوافق على أنه سيكون من الجيد أن يكون "مجرد عمل" ، فالأشياء بعيدة كل البعد عن "الجحيم" وحتى أبعد من كونها "عديمة الفائدة".
لقد كنت مستخدمًا سعيدًا لهذا المشروع لمدة عامين تقريبًا.
تحدث هذه المشكلة فقط عندما تريد تحديث npm العمومية نفسها. لا توجد مشكلة في تثبيت إصدارات عقدة جديدة عبر nvm وتأتي العقد الجديدة مع حزم npm أحدث.
إذا وجدت نفسك تقوم بترقية npm كثيرًا في بيئة التطوير الخاصة بك بحيث تصبح حياتك جحيمًا بسبب هذا ، فمن المحتمل أنك تقوم بشيء خاطئ.
أعتقد أنه مرتين فقط منذ أن أصبحت مستخدمًا لـ nvm ، كان علي ترقية npm نفسها بالفعل وضرب هذه المشكلة. ليس بالسوء الذي تجعله يبدو.

هذا هو النص الخاص بي لترقية npm على nvm:

https://stackoverflow.com/a/50955293/491553

لقد فعلت ذلك للتو في تثبيت جديد. يعمل بشكل رائع.

ربما يجب على شخص ما اختبار محدث npm بدون حقوق المسؤول ...

أعتقد أن هذا هو أكثر من خطأ إصدار npm سابق من nvm واحد.

ومع ذلك ، لتحديث npm ، احذف في المجلد nvm/[node version] (بالنسبة لي هو v10.15.3 ) الملفات التالية:

C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npm
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npm.cmd
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npx
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npx.cmd

أعد تسمية مجلد npm إلى npm2

C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2

افتح أي وحدة تحكم مع حقوق المسؤول (أو حتى انقر بزر الماوس الأيمن على اختصار vscode ، ثم انقر بزر الماوس الأيمن على Visual Studio Code واضغط على تشغيل كمسؤول ) واكتب الأوامر:

cd C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2\bin
node npm-cli.js i -g npm<strong i="22">@latest</strong>

تحديث: كما أشار @ Fr0sT-Brutal ، لا يجب أن تكون حقوق المسؤول مطلوبة في هذه المرحلة ، لأننا قمنا للتو بحذف الملفات التي خلقت تعارضات 👍

منجز.

حذف المجلد C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2 .

(هذا مجرد خطوة بخطوة إعادة إنتاج ما قاله @ 19majkel94 أعلاه)

createdbyjurand : بدون حقوق المسؤول ...
لا تحتاج إلى حقوق المسؤول لاستبدال مجموعة من الملفات بمجموعة أخرى من الملفات ...
(طالما لديك حق الوصول للكتابة إلى الملفات / الدلائل)

createdbyjurand : بدون حقوق المسؤول ...
لا تحتاج إلى حقوق المسؤول لاستبدال مجموعة من الملفات بمجموعة أخرى من الملفات ...
(طالما لديك حق الوصول للكتابة إلى الملفات / الدلائل)

أنا أعلم. لكن مجلد ملفات البرنامج على نظام التشغيل Windows 10 له حق وصول محدد. هذا هو السبب وراء تثبيت الكثير من التطبيقات نفسها مؤخرًا في مجلدات التجوال أو المحلية. حتى Visual Studio Code له تثبيتان منفصلان. واحد للمحلي والآخر لملفات البرامج. طريقة واحدة لحل هذا هو تغيير موقع مجلد nvm nodejs. ثانيًا ، قم بتغيير خيارات أمان المجلد ولكن هذا يجعل هذا المجلد غير آمن. ما كتبته ، ما كتبه @ 19majkel94 ، هو حل لإصلاح تحديث npm كما هو ، باستخدام تثبيت nvm القياسي مع الإعدادات الافتراضية للأشخاص الذين يريدون فقط حل المشكلة دون الدخول في المزيد والمزيد من تغييرات النظام أو التكوين. لأنه حتى إذا قمت بتغيير حقوق المجلد أو الوصول ، فلا يزال يتعين عليك القيام بجميع الخطوات التي ذكرتها ، وسيستخدم التغيير الوحيد وحدة التحكم بدون حقوق المسؤول.

createdbyjurand : فقط أقول ، نحن وكمطورين ، ليس لدينا حقوق المسؤول. إذا كان تحديث npm أو برنامج نصي فيه يتطلب حقوق المسؤول ، فهذا يكسر بيئة التطوير الخاصة بنا ، ومن ثم لا يمكننا تثبيت أي حزم عقدة ، ومن ثم لا يمكننا العمل.

createdbyjurand ما الذي تحتاجه حقوق المسؤول؟

createdbyjurand ما الذي تحتاجه حقوق المسؤول؟

نقطة جيدة ، لا أفعل ذلك ، لأنني قمت للتو بحذف الملفات التي كانت تسبب تعارضات 👍

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

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

نعم مؤخرا. قامت Microsoft بتغيير حقوق الوصول لمجلد Program Files . هذا هو السبب في أن الكثير من البرامج تتحرك الآن نحو دليل التجوال أو دليل تثبيت المجلد المحلي . وهذا هو السبب في أنه منذ وقت ليس ببعيد كان كل شيء يعمل بشكل جيد مع npm ، والآن فجأة نحصل على هذا:

$ npm i -g npm<strong i="11">@latest</strong>
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
npm ERR! path C:\Program Files\nodejs\npm
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall open
npm ERR! Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!  { [Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm']
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!      errno: -4048,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'open',
npm ERR!      path: 'C:\\Program Files\\nodejs\\npm' },
npm ERR!   stack:
npm ERR!    'Error: EPERM: operation not permitted, open \'C:\\Program Files\\nodejs\\npm\'',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'open',
npm ERR!   path: 'C:\\Program Files\\nodejs\\npm' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It's possible that the file was already in use (by a text editor or antivirus),
npm ERR! or that you lack permissions to access it.
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\fehTH4RTH\AppData\Roaming\npm-cache\_logs\2019-03-22T14_28_26_153Z-debug.log

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

@ Fr0sT-Brutal well ، من أجل التنظيم ، أفعل ذلك أيضًا. إذا كان لدي بالفعل مجلد نظام مخصص للتطبيقات (ملفات البرامج) ، فعندما أقوم بتثبيت أي شيء - أقوم بتثبيته في مجلد "ملفات البرنامج". خاصة عدم تلويث المجلد الجذر لمحرك الأقراص بمجلدات عشوائية مثل "nodejs" أو "nvm" وأيضًا عدم الوصول إلى مسارات طويلة ، مثل "c: / Users / My Name / Roaming / ApplicationData / أيًا كان" ، أنا فقط أفضل "c : / ملفات البرنامج / أيا كان ".
ومع ذلك ، على الرغم من أنه كان من الممكن أن يزعجني حقًا أن أعمل بهذه الطريقة (لديك nvm | عقدة في مكان خارج ملفات البرنامج) ، ما زلت ... حاولت على الأقل وقمت بتثبيته في c: / nvm (مثل إصدارات العقدة ، لقد جربت كلاً من c: / node وكمجلد فرعي لـ nvm: c: / nvm / node شيء من هذا القبيل). ولكن استمرت المشكلة ، ولا يزال يتعذر تحديث npm بتشغيل npm i -g npm . الحمد لله ، لأنني لا أريد أن أعيش مع أشياء مثبتة خارج مجلد Program Files. بالطبع استسلمت أخيرًا وما زلت أستخدم إصدارًا واحدًا من العقدة في جميع الأوقات ، تم تثبيته باستخدام مثبت العقدة الافتراضي لنظام التشغيل Windows من nodejs.org

createdbyjurand مؤخرًا؟ IIRC، PF أصبح مقيد الكتابة للمستخدم منذ XP.
MrCroft لقد تساءلت دائمًا كيف يمكن للناس العيش مع كل الأشياء المدفونة داخل PF ... الفضاء في المسار يعني أن الاقتباس مطلوب دائمًا ، والجنون مع x64-PF و x32-PF يضيف تكرارًا واحدًا للبحث ، و - الأكثر إحباطًا - a هيكل برنامج مسطح تمامًا. لدي> 100 تطبيق حتى على جهاز الكمبيوتر المنزلي و 50 تطبيقًا أكثر في العمل. كنت أقفز من النافذة إذا اضطررت إلى البحث عن تطبيقات داخل PF.

ليس عليك وضعه في
C:/Users/My Name/Roaming/Whatever
يمكنك استخدام أي دليل طالما أنه قابل للكتابة من قبل المستخدم.

لدي جميع البرامج على D: البرامج ، ولا يتطلب أي منها حقوق المسؤول ، بما في ذلك nodejs و python و cmake و JetBrains و go و OpenOffice وما إلى ذلك.

ثم أضعهم جميعًا في متغيرات بيئة المسار والتسجيل لـ current_user.
يعمل كالسحر.
لا حاجة لمثبتي الصندوق الأسود السيء.

إذا كنت بحاجة إلى العثور على أي شيء ، فأنا أستخدم locate32 ، ولا أتصفح المجلدات / Desktop / StartMenu.
Locate32 هو مجرد طريقة أسرع.
أو أقوم بتشغيلها عبر CTRL + R ، حيث يمكنك تعيين الأسماء المستعارة في التسجيل في HKCU.

السبب الوحيد لامتلاك شيء ما في C:\ProgramFiles هو عندما تريد تثبيت تطبيق معين لكل مستخدم على الجهاز ، والذي لا تريده كمطور في معظم الحالات ، نظرًا لوجود برامج في المسار / التسجيل على مستوى النظام قد تعطل برامج المستخدمين الآخرين ، أو تمنع قدرتهم على استخدام إصدار مختلف عن الإصدار الذي تستخدمه. أيضًا ، يكون مفيدًا على الخادم - يمكن للمستخدم 1 استخدام nodejs الخاصة به ، و user2 nodejs أخرى ، ولا يعض نفسه.

من خلال إزالة حقوق المسؤول والاحتفاظ بكل شيء في المستخدم ، فإنك تضمن عدم تمكن مستخدم واحد من كسر البرامج والإعدادات الخاصة بمستخدم آخر. كما أنك تضمن تشغيل تطبيقاتك بدون حقوق المسؤول ، وهو أمر قد يكون مفيدًا في بعض الأحيان. وفي أسوأ الأحوال ، يمكنك دائمًا حذف حساب مستخدم وتطهيره وإعادة قراءته لاحقًا.

بهذه الطريقة يمكنني تشغيل ما يقرب من 1000 برنامج ، كل ذلك بدون قضاء دقيقة واحدة في التثبيت.
حتى JetBrains IDE و PostgreSQL يعملان بهذه الطريقة.
البرامج الوحيدة التي لم أتمكن من العمل بها مثل هذه هي MS-Office و SQL-Server و Visual-Studio.
لا ينبغي إضافة npm إلى هذه القائمة سيئة السمعة ، وكل ذلك لأنه لا يمكن إزعاج نقل بعض الملفات الموجودة بدلاً من الكتابة فوقها.

على أي حال ، لدي برنامج nodejs-update-script الخاص بي الآن ، والذي يكتشف مجلد العقد من متغير بيئة المسار.

لقد قمت للتو بإعادة تسمية هذه الملفات إلى "1"
npm1.cmd ، npm1 ، npx1 ، npx1.cmd

وركض:
" تحديث npm1 -g "

يبدو أنها عملت بشكل جيد ، أي أفكار؟

ربما يمكن تضمين ذلك في nvm - ربما عن طريق إضافة علامة إصدار npm جنبًا إلى جنب مع إصدار العقدة وعلامة البنية عند التثبيت ، ووظيفة update-nvm

لقد قمت للتو بإعادة تسمية هذه الملفات إلى "1"
npm1.cmd ، npm1 ، npx1 ، npx1.cmd

وركض:
" تحديث npm1 -g "

يبدو أنها عملت بشكل جيد ، أي أفكار؟

لقد نجحت أيضًا ، لكن كان علي حذف المجلد
nvmv10.15.3node_modulesnpmnode_modules.bin
لأن الخطأ الذي يشير إلى هذا المجلد لا يزال يظهر.

شكرا لك!

مرحبًا يا رفاق ، لقد صنعت حزمة لتحديث إصدار npm المحلي من Program Filesnodejs
الدفع
npm install -g npm-win-upgrade
npm-win-upgrade

لست متأكدًا مما إذا كان متوافقًا مع NVM على الإطلاق ولكنه يستخدم process.execPath لتحديد موقع مجلد node.exe ، لذلك يجب أن يفعل.

dolpsdw تلقيت الخطأ التالي عند تشغيل npm-win-upgrade :

Npm instaled as Global package: uninstalling...                                                                     
(node:10192) UnhandledPromiseRejectionWarning: Error: Command failed: npm uninstall npm -g                          
npm ERR! path C:\Program Files\nodejs\npx.cmd                                                                       
npm ERR! code EEXIST                                                                                                
npm ERR! Refusing to delete C:\Program Files\nodejs\npx.cmd: is outside C:\Program Files\nodejs\node_modules\npm and
 not a link                                                                                                         
npm ERR! File exists: C:\Program Files\nodejs\npx.cmd                                                               
npm ERR! Move it away, and try again.                                                                               

npm ERR! A complete log of this run can be found in:                                                                
npm ERR!     C:\Users\sjodle\AppData\Roaming\npm-cache\_logs\2019-04-23T17_42_11_305Z-debug.log                     

    at ChildProcess.exithandler (child_process.js:281:12)                                                           
    at emitTwo (events.js:126:13)                                                                                   
    at ChildProcess.emit (events.js:214:7)                                                                          
    at maybeClose (internal/child_process.js:915:16)                                                                
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)                                        
(node:10192) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing
 inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (
rejection id: 1)                                                                                                    
(node:10192) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejec
tions that are not handled will terminate the Node.js process with a non-zero exit code.                            

مرحبًا sodle ،

الخطأ الأول (العقدة: 10192 فشل الأمر: npm uninstall npm -g): يحدث لأن npm تم اكتشافه على أنه عام مثبت في المجلد٪ appdata٪ npm ، ولكن هذا قد يكون باقيًا وذاكرة التخزين المؤقت القديمة للعقدة يمكن إصلاح ذلك باستخدام كشف npm list -g.

حول الخطأ الثاني بالنسبة لي ، هذا الخطأ "رفض الحذف" ... يبدو مثل امتيازات المسؤول حيث لم يتم التصريح بذلك في العملية. (تم رفض UAC promp؟)

حاول تنفيذ البرنامج النصي وقبول توسيع نطاق امتياز المسؤول ، وإذا لم يتم إصلاح ذلك ، فيرجى إخبارنا بإصدار العقدة من Origin لإعادة إنتاج الخطأ.

dolpsdw أنا متأكد من أن كلاهما جزء من نفس الخطأ - npm يرفض حذف الملف لأنه في غير محله أو شيء من هذا القبيل.

على أي حال ، لم يعد لدي الجهاز الذي حدث الخطأ عليه. سأخبرك إذا واجهت نفس المشكلات عند استبدالها.

مرحباrsshilli
شكرا لك على تقديم النص. إنه يعمل بشكل جيد ويقوم بتحديث npm إلى أحدث إصدار حسب الرغبة.
كانت المشكلة البسيطة الوحيدة التي واجهتها هي أن تشغيل npm list -g --depth=0 لسرد جميع حزم العقدة أدى إلى تثبيتين لـ npm.
لذلك قمت ببساطة بإضافة بعض أسطر التعليمات البرمجية لإزالة الملفات المعاد تسميتها "...- القديمة" والمجلد المعاد تسميته "...- القديم".
أدى تشغيل npm list -g --depth=0 لسرد كافة حزم العقد إلى تثبيت واحد لـ npm كما هو مطلوب.
هذه هي النسخة المحدثة من البرنامج النصي الخاص بك:
cd %APPDATA%\nvm\v8.9.0 # or whatever version you're using
mv npm npm-old
mv npm.cmd npm-old.cmd
cd node_modules\
mv npm npm-old
cd npm-old\bin
node npm-cli.js install -g npm@latest

cd %APPDATA%\nvm\v8.9.0 # or whatever version you're using
rm npm-old
rm npm-old.cmd
cd node_modules\
rm -rf npm-old

هذا هو النص الخاص بي لترقية npm على nvm:

https://stackoverflow.com/a/50955293/491553

لقد فعلت ذلك للتو في تثبيت جديد. يعمل بشكل رائع.

فشلdolpsdw npm-win-upgrade مع نفس أخطاء npm install -g npm .
هناك حزمة أخرى npm-windows-upgrade ، والتي فشلت أيضًا ، لكنها لا تذكر السبب (أفترض أنها نفسها).

@ ماركوس-Hanischrsshilli شكرا لك على هذا السيناريو.

مع الأخذ في الاعتبار ذلك كنقطة بداية ، أود إضافة البرنامج النصي المعمم التالي بوويرشيل ، والذي يسمح لك بترقية NPM بغض النظر عن إصدار Node الحالي وموقع nvm:

Push-Location (Join-Path (Split-Path (Get-Command nvm).Path) (node --version))
  Move-Item npm npm-old
  Move-Item npm.cmd npm-old.cmd
  Move-Item npx.cmd npx-old.cmd
  Push-Location .\node_modules
    Move-Item npm npm-old
    Push-Location .\npm-old\bin
      node npm-cli.js install -g npm<strong i="8">@latest</strong>
    Pop-Location
    Remove-Item npm-old -Recurse
  Pop-Location
  Remove-Item npx-old.cmd
  Remove-Item npm-old.cmd
  Remove-Item npm-old -Recurse
Pop-Location

(الافتراض الوحيد هو أن nvm تخزن إصداراتها بجانب ملف exe الخاص بها ، وتسميتها وفقًا لمخرجات node --version )

اقرأ من خلال هذا الموضوع ؛ في النهاية ، كان من حسن حظي إلغاء تثبيت وإعادة تثبيت node.js باستخدام برامج الإضافة / الإزالة.

تم إصلاح المشكلة بالنسبة لي منذ عام مضى من خلال تشغيل نظام التشغيل mac ؛)

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

تم إصلاح المشكلة بالنسبة لي منذ عام مضى من خلال تشغيل نظام التشغيل mac ؛)

تصحيح:
تم تجنب المشكلة
: rofl:

@ kuncevic ، @ Fr0sT-Brutal:
ومن خلال التخلي عن حريتك في الاختيار عندما يتعلق الأمر بالأجهزة.
ليست مقايضة جيدة على الإطلاق.
أيضًا ، أنت تتخلى عن سيطرتك على البرنامج الذي يعمل على جهاز الكمبيوتر الخاص بك.
إذا كنت بحاجة إلى التبديل إلى مكان ما ، فانتقل إلى Linux - هذا هو الخيار الأفضل بكثير لعناصر الخادم على أي حال.

https://blog.npmjs.org/post/189618601100/binary-planting-with-the-npm-cli

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

أيها الناس ، هذه مشكلة npm ، وليست مشكلة NVM4W. هناك أداة مساعدة في ذلك ، متوفرة على https://github.com/felixrieseberg/npm-windows-upgrade.

لقد قمت للتو بإعادة تسمية هذه الملفات إلى "1"
npm1.cmd ، npm1 ، npx1 ، npx1.cmd

وركض:
" تحديث npm1 -g "

فقط قم بإعادة تسمية الملف npm1.cmd ، هذا يكفي. ثم قم بتشغيل التحديث npm .

لا حاجة لاستخدام npm-windows-upgrade .

coreybutler لست مقتنعًا تمامًا بذلك. لم الآلية الوقائية الوطنية النوافذ الترقية node (Join-Path $env:NVM_SYMLINK 'node_modules\npm\lib\npm.js') install -g npm مبدئيًا ، وعمل npm install -g npm لتحديث لاحق بدون تدخل يدوي . يبدو أن تثبيت npm الأولي معطل بطريقة ما.

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

kuncevic اقتراح لتحسين تعليماتك:

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

بوويرشيل:

node (Join-Path $env:NVM_SYMLINK 'node_modules\npm\lib\npm.js') install -g npm

موجه الأمر:

node "%NVM_SYMLINK%\node_modules\npm\lib\npm.js" install -g npm

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

@ bladeoflight16 حاولت ولكن حصلت على هذا الخطأ.

C:\Users\woonk>node %NVM_SYMLINK%\node_modules\npm\lib\npm.js install -g npm
internal/modules/cjs/loader.js:796
    throw err;
    ^

Error: Cannot find module 'C:\Program'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:793:17)
    at Function.Module._load (internal/modules/cjs/loader.js:686:27)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)
    at internal/main/run_main_module.js:17:11 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

@ mattdamon108 آسف. تحتاج إلى اقتباس المسار في cmd إذا كان يحتوي على مسافات. لقد قمت بتحديث المنشور. شكر.

كان يحصل على هذا الخطأ على Windows وأردت العودة إلى npm أقدم لمشروع وبطريقة معتدلة للغاية ، ذهبت للتو إلى موقع الارتباط الرمزي الذي تم تكوينه بالفعل لأمر npm وأعدت تسمية مجلد npm في node_modules إلى اسم الإصدار الخاص به ثم تنزيله الإصدار الذي أحتاجه وأنشأت مجلدًا باسم npm وألغيت المحتويات التي تم تنزيلها هناك والتي عملت!

coreybutler لم ينجح اقتراحك بإنشاء رابط رمزي بالفعل. أيضًا في Windows ، من الصعب تحرير ارتباط رمزي بسرعة. كما أنني كنت بحاجة للتبديل بين نسختين من npm بانتظام. ومن ثم فعلت هذا.

لقد قمت للتو بإعادة تسمية هذه الملفات إلى "1"
npm1.cmd ، npm1 ، npx1 ، npx1.cmd
وركض:
" تحديث npm1 -g "

فقط قم بإعادة تسمية الملف npm1.cmd ، هذا يكفي. ثم قم بتشغيل التحديث npm .

لا حاجة لاستخدام npm-windows-upgrade .

xmedekochidveer ربما أفتقد شيئًا ما هنا ، لكن ليس npx npm-windows-upgrade أكثر مباشرة من إعادة تسمية الملفات يدويًا قبل تشغيل npm update ؟

jakobrosenberg npm-windows-upgrade لم يعمل معي. ربما فعلت شيئًا خاطئًا ، ربما حاولت الترقية ، أو أيا كان. إعادة تسمية ملف واحد في IMO أسهل من الدراسة ، لماذا npm-windows-upgrade لا يعمل وكيفية إصلاحه.

ملاحظة: يوصى باستخدام npm-windows-upgrade عالميًا ، لذلك يمكنك تشغيله كـ npm-windows-upgrade ، وليس npx npm-windows-upgrade .

xmedeko لن يعمل npx npm-windows-upgrade عالميًا ما لم تكن داخل مشروع عقدة بتثبيت محلي npm-windows-upgrade ؟

jakobrosenberg نعم ، أنت محق ، لم أكن أعرف npx تتصرف بهذا الشكل ، فأنا أستخدمه دائمًا لحزم المشاريع المحلية فقط.

برنامج نصي دفعي يعمل بشكل جيد.
https://gist.github.com/nokidding/aafaf90adc80cbce54b676340817bb13

يعمل كالسحر
فقط تأكد من أن 'set node_path =! PROGRAMFILES! nodejs' تشير إلى المسار الصحيح في حالتك
على وجه التحديد في حالة عدم التثبيت القياسي (استخراج الرمز البريدي)

المشكلة نفسها!
كيف حللها:

  1. لوحة التحكم => إلغاء تثبيت البرنامج
  2. احذف تطبيق NodeJS
  3. حذف جميع مجلدات NodeJS من ملفات البرنامج
  4. برنامج Fresh Install Node JS

أنا فقط بحاجة إلى الخطوة 4 ، أي مجرد تنزيل وتثبيت جديد Node JS.
ثم عملت.

تعمل إعادة تثبيت إصدار العقدة بشكل جيد ، ولكن نظرًا لأن هذه مشكلة مرتبطة بـ nvm ، فلماذا لا تستخدم قوة nvm لإصلاح المشكلة؟ بالنسبة لي ، بدلاً من المرور عبر برامج الإضافة / الإزالة ، كان من الأسرع / الأسهل الاحتفاظ بكل ذلك في سطر الأوامر. فمثلا:

nvm uninstall VERSION
nvm install VERSION

بعد ذلك ، أغلق الغلاف وأعد فتحه. سريع وسهل (الآن بعد أن عرفت ، على الأقل). 😄

إذا كانت لديك أية مشكلات (على سبيل المثال ، يشير nvm إلى أن الإصدار مثبت بالفعل) ، فقم بالتحقق لمعرفة ما إذا كان المجلد المرتبط بهذا الإصدار لا يزال موجودًا (على سبيل المثال ، %NVM_HOME%\VERSION ) وأن الملف node.exe غير موجود حتى الآن. إذا كان لا يزال موجودًا ، فتأكد من عدم وجود أي تطبيقات من المحتمل أن تكون قيد التشغيل (على سبيل المثال في حالتي ، كان IDE الخاص بي يقوم بتشغيله ، لذلك أغلقت ذلك وتمكنت من إزالته تمامًا).

تحرير: ⚠️ أفترض أن هذا الحل البسيط يأتي مع أحد الآثار الجانبية المهمة: سيؤدي إلى إزالة الحزم المثبتة عالميًا ... ربما لا يزال من الأسهل إعادة تثبيتها يدويًا. كن حذرا! ⚠️

هذا البرنامج النصي يعمل بشكل مثالي: https://github.com/coreybutler/nvm-windows/issues/300#issuecomment -606682441
https://gist.github.com/nokidding/aafaf90adc80cbce54b676340817bb13

شكرا لك!

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

القضايا ذات الصلة

flpms picture flpms  ·  4تعليقات

David263 picture David263  ·  3تعليقات

snerte picture snerte  ·  5تعليقات

martijnsenden picture martijnsenden  ·  3تعليقات

leiamac picture leiamac  ·  4تعليقات