Nvm-windows: لماذا لا يعمل على تبديل إصدار العقدة عبر "استخدام nvm"

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

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

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

بيئتي

  • [x] Windows 7 أو إصدار أقدم (غير مدعوم بالفعل بسبب موسوعة الحياة - راجع ويكي للحصول على التفاصيل)

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

  • [x] 1.1.6

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

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

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

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

سلوك متوقع

حاولت التبديل من v8.9.1 إلى 6.12.0 (إصدار العقدة)

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

ولكن ، لم يتحول إلى الإصدار 6.12.0 أو إصدارات أخرى.
(قمت بتثبيت 8.9.1 أخيرًا)

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

فتحت كمد عبر المسؤول.

ج: Windowssystem32> nvm ls

  • 8.9.1 (تستخدم حاليًا 64 بت قابل للتنفيذ)
    7.1.0
    6.12.0

ج: Windowssystem32> node -v
الإصدار 9.8.1

C: Windowssystem32> استخدام nvm 6.12.0
الآن باستخدام العقدة v6.12.0 (64 بت)

ج: Windowssystem32> node -v
الإصدار 9.8.1

ج: Windowssystem32> nvm ls

  • 8.9.1 (تستخدم حاليًا 64 بت قابل للتنفيذ)
    7.1.0
    6.12.0

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

الحل:
تمت إعادة تسمية "C: Program Filesnodejs" إلى "C: Program Filesnodejsx" ،
ثم من cmd مرتفع يسمى "استخدام nvm 8.9.1" (أي نسخة حصلت عليها يجب أن تعمل ..) وبدأت في العمل.
يبدو أن المشكلة تكمن في وجود دليل nodejs ، ولا يمكن لـ nvm تغييره إلى ارتباط رمزي و "يفشل بصمت" سيكون أمرًا رائعًا مع فشل ورسالة خطأ توضح المشكلة.

ال 43 كومينتر

نفس الشيء

+1

نفس الشيء مع nvm 1.1.5:

C:\windows\system32>nvm version
1.1.5

C:\windows\system32>nvm ls

    8.9.2
  * 4.7.2 (Currently using 64-bit executable)

C:\windows\system32>nvm use 8.9.2
Now using node v8.9.2 (64-bit)

C:\windows\system32>node -v
v4.7.2

C:\windows\system32>

biologeek نفس الشيء: /
هل وجدت بعض الحل؟

يحدث هذا غالبًا بسبب استخدام حساب مستخدم غير متميز. يجب أن يحتوي حسابك على أذونات على مستوى المسؤول ، لأن Windows يتطلب ذلك للحصول على ارتباطات رمزية. ينشئ nvm use ارتباطًا رمزيًا لتثبيت العقدة المناسب. إذا كان الارتباط الرمزي موجودًا داخل C:\Program Files ، فستحتاج إلى أذونات مرتفعة (سيحاول nvm4w القيام بذلك نيابةً عنك تلقائيًا).

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

biologeek - ما زلت بحاجة إلى وصول المسؤول لإعادة تسمية الدلائل ضمن C:\Program Files لأنه دليل محمي على Windows (نفس الشيء ينطبق على C:\windows\system32 ). أنا شخصياً أحتفظ بالارتباط الرمزي NVM4W في دليل المستخدم الخاص بي حتى لا تكون هذه مشكلة.

+1 على هذه المشكلة: لا يمكنني تغيير الإصدار.

الحل:
تمت إعادة تسمية "C: Program Filesnodejs" إلى "C: Program Filesnodejsx" ،
ثم من cmd مرتفع يسمى "استخدام nvm 8.9.1" (أي نسخة حصلت عليها يجب أن تعمل ..) وبدأت في العمل.
يبدو أن المشكلة تكمن في وجود دليل nodejs ، ولا يمكن لـ nvm تغييره إلى ارتباط رمزي و "يفشل بصمت" سيكون أمرًا رائعًا مع فشل ورسالة خطأ توضح المشكلة.

يمكن تأكيد ما قاله ituasdu . شكرا!

ituasdu حل مشكلتي , thx

مرحبًا ، نفس المشكلة هنا.

تقوم NVM بإنشاء ارتباط رمزي aa لإصدار العقدة المثبتة.

تكمن المشكلة في أن Windows 7 يتطلب المستويات الصحيحة للمسؤول لإنشاء ارتباط رمزي ، ولم يعد الأمر كذلك في نظام التشغيل Windows 10.

الحل البديل هو استخدام الوصلات (روابط "صلبة") على Windows 7 مع المعلمة "/ J". لا تتطلب الوصلات مستويات حقوق المسؤول وحسابات المستخدمين ذات الامتيازات المنخفضة حيث يمكن لي استخدامها. مثال:

nvm install 8.11.2
mklink /D /J node C:\PATH_TO_NVM\nvm\v8.11.2

سؤال: ألن تكون فكرة جيدة استخدام الوصلات بدلاً من الروابط الرمزية؟ أو على الأقل تحديد خيار لـ nvm على سبيل المثال "- الوصلات"؟

أفكر في إنشاء طلب سحب لهذا لأنه محظور لشركتي. هل سيكون مفيدا؟

@ nan0 إنشاء تقاطع على Windows 7 لا يعمل ... لا يزال غير

C:\Program Files\nodejs على الإصدار 6.9.4 (تم تثبيته قبل تثبيت NVM4W).

C:\Users\[user]\AppData\Roaming\nvm على v6.9.4\ و v8.11.3\

قمت بتشغيل الأمر الذي قدمته في رسالتك:

العدد 1
mklink /D /J node C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 عندما أحاول القيام بذلك لـ v6.9.4 تظهر رسالة "لا يمكن إنشاء ملف عندما يكون هذا الملف موجودًا بالفعل."

العدد 2
أيضًا ، باستخدام nvm use v8.11.3 ثم nvm list ، لا يشير ذلك إلى أنه يستخدم في الواقع أيًا من إصدارات العقدة المثبتة nvm.

هل هناك أي شيء آخر يمكن القيام به؟
كيف يمكنني رؤية التقاطعات التي تم إنشاؤها؟ أين هم موجودون بالفعل؟

أنا استخدم:
Windows 7. لا توجد حقوق مسؤول مسموح بها للمستخدم الخاص بي.

لا يهم أنها تعمل. أدركت أنني كنت أصنع junction في المجلد الخطأ.

إعادة تسمية C: Program Filesnodejs إلى C: Program Files nodejsx
ثم عمل التقاطع كـ "nodejs" وتوجيهه إلى C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 !

لتلخيص الحل هو هذا:

مع عدم وجود عقدة قائمة بذاتها مثبتة.

في المجلد C:\Program Files\ استخدم cmd لتشغيل mklink /D /J nodejs C:\Users\[user]\AppData\Roaming\nvm\v8.11.3

للراغبين في المساهمة ، شكرا لك!

لكن؛ أريد أن أشير إلى أنه تم تجنب التقاطعات بشكل صريح لأنها لن تعمل عبر محركات أقراص ثابتة مختلفة. كانت هذه نقطة مؤلمة بشكل خاص في شبكات المؤسسات ذات محركات الأقراص المشتركة / محركات الأقراص المعينة.

ituasdu لقد حل مشكلتي ،
شكرا على الحل.

جهاز الكمبيوتر الخاص بي هو Windows 7 ، ولدي امتيازات المسؤول. في نفس الموقف ، لا يمكن لـ NVM تغيير الإصدار ، أسلوبي هو إعداد NVM_SYMLINK D: Project NVM v8.11.4 في متغير البيئة ، ولا يتطلب تبديل إصدارات العقدة سوى تغيير رقم الإصدار المقابل لمسار NVM متغير البيئة ، مثل: NVM_SYMLINK D: Project NVM v6.9.0. بهذه الطريقة ، على الرغم من حل المشكلة ، في كل مرة أغير فيها الإصدار ، كان الأمر مزعجًا ، ولم أجد حلًا أفضل في الوقت الحالي.

يعمل حل "Sagan" من مكدس الفائض بالنسبة لي:
https://stackoverflow.com/questions/28313372/nvm-for-windows-not-working

لي،

nvm list 

image

ثم يمكنني إزالة v8.9.4 مجلد من NVM.
image

بعد ذلك:

nvm list 

image

بعد ذلك ، أعود v8.9.4 للخلف.

هذا ما يحدث لي على Windows 10 10.0.17134.165
لقد جربت الحل الذي ذكرته ituasdu ونجح . شكرا لكم!!!

إذا وجدت أنه بعد محاولة cmd مثل:
nvm use 6.10.0
ولم يتم تغيير إصدار nodejs ، يمكنك بدء cmd.exe أو بوويرشيل من قبل المسؤول.
image

واجهت نفس المشكلة عند التبديل بين العقدة 6.6.0 و 7.9.0 (Windows 10) ولكن حل ituasdu لم يكن يعمل. إعادة تثبيت nvm لم تنجح أيضًا.

قمت بتشغيل تثبيت nvm الأحدث (تم التثبيت 11.3.0) وهذا بطريقة ما تم إصلاحه بالنسبة لي.

الحل:
تمت إعادة تسمية "C: Program Filesnodejs" إلى "C: Program Filesnodejsx" ،
ثم من cmd مرتفع يسمى "استخدام nvm 8.9.1" (أي نسخة حصلت عليها يجب أن تعمل ..) وبدأت في العمل.
يبدو أن المشكلة تكمن في وجود دليل nodejs ، ولا يمكن لـ nvm تغييره إلى ارتباط رمزي و "يفشل بصمت" سيكون أمرًا رائعًا مع فشل ورسالة خطأ توضح المشكلة.

هذا عمل لي.
image

PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v10.11.0
PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v11.4.0

ituasdu عملت لي أيضا .. شكرا .. :)

ituasdu شكرا ، عملت مثل السحر. أعتقد أن هذا يحدث عندما يكون لدى الأشخاص NodeJS مثبتة مسبقًا مباشرة بدون nvm ثم يحاولون استخدام العقدة من خلال nvm.

هذا أيضا يعمل بالنسبة لي ، شكرا.

لا أعرف ما إذا كان هذا يمكن أن يلقي بعض الضوء على المشكلة ولكن في حالتي أعتقد أن هذا حدث بعد تثبيت إصدار جديد من العقدة بدون nvm (يدويًا). يبدو أن هذا الإجراء يصنع nvm مجنون.

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

الألم الآخر هو ما أعانيه حاليًا (ليس بسبب nvmw) حيث ، على الرغم من أنني أمتلك بالفعل مشرفين إداريين في بعض الحالات ، في كل مرة أرغب في التبديل بين إصدارات العقدة ، يجب أن أفتح نافذة cmd أخرى كاملة ، قم بتشغيل cmd كمسؤول وأخيراً قم بتشغيل nvm use 10.15.1 (على سبيل المثال). ثم انتقل مرة أخرى إلى بلدي ديف ، نافذة cmd. أرغ. مرة أخرى ، الألم بسبب عمل البيئة ليس بسبب nvmw. (nvmw رائع بالمناسبة).

مجرد فكرة. ؛-)

قم بتشغيل nvm use <node.js version you want to use> (على سبيل المثال nvm use 10.15.3 ) ضمن Powershell ISE حيث قام المسؤول بحل المشكلة في Windows 10 الخاص بي.

لا بد لي من تشغيل nvm use any.version عدة مرات تحت Powershell كمسؤول حتى يعمل. يقوم بتغيير الإصدار بشكل عشوائي في المحاولة الأولى أو الثانية أو الثالثة (إصدار nvm 1.1.7).

حاولت إصلاحه عن طريق تثبيت Link Shell Extension والقيام بالخطوات التالية:

  1. انقر بزر الماوس الأيمن على C:\Program Files\nodejs
  2. حدد _اختيار مصدر الارتباط_
  3. انقر بزر الماوس الأيمن على C:\Program Files
  4. حدد _إفلات باسم ..._> _ ارتباط رمزي_
  5. إعادة تسمية nodejs - SymbolicLink إلى nodejsx

لكن للأسف المشكلة ما زالت تحدث.

يمكن تأكيد حل ituasdu لي أيضًا.

ituasdu يعمل بالنسبة لي ، thnks.

@ monico-moreno - في المرة القادمة اتصل بي عبر البريد الإلكتروني عندما لا أرد لعدة أشهر في كل مرة :) للإجابة على سؤالك ، يمكنك التثبيت على أي مجلد تريده باستخدام المثبت. لكن؛ تتطلب جميع الارتباطات الرمزية على Windows امتيازات المسؤول ، باستثناء بعض أوضاع المطورين في الإصدارات الأحدث من Windows 10. خلاصة القول هي أن امتيازات المسؤول تدخل حيز التنفيذ في مرحلة ما.

أيضًا ، ربما يمكنك اختبار نظام القائمة بشكل تجريبي عند اختتامه (تبديل الإصدارات من شريط مهام Windows). هل سيكون هذا سير عمل أفضل؟

  • افتح لوحة التحكم وقم بإلغاء تثبيت nvm والعقدة.
  • قم بتثبيت nvm-setup.zip من https://github.com/coreybutler/nvm-windows/releases
  • افتح موجه الأوامر. أدخل nvm installversion. ثم استخدام الإصدار nvm.
  • تثبيت الغزل. ثم في موجه الأوامر ، قم بتشغيل تثبيت الغزل أو الغزل.
  • تحقق من إصدار العقدة بواسطة node -v.

لدي فقط مشكلة مماثلة ، لكن سبب مختلف.

D:\> node -v
v12.14.0
D:\> nvm use 8.9.4
Now using node v8.9.4 (64-bit)
D:\> node -v
v12.14.0

// problem
D:\> where node
D:\soft\nodejs\node.exe // <- old nvm used this one
C:\Program Files\nodejs\node.exe // <- new nvm was changing this one

كان لدى IIRC I إصدار nvm سابقًا مثبتًا على D: soft وكان يغير الرابط D: softnodejs. في وقت ما توقف nvm القديم عن العمل ، لأن مستودع npm غيّر موقعه (إذا كان يعمل - لا تلمسه ، من فضلك). اضطررت إلى تثبيت nvm الجديد ، وأعتقد أن nvm الجديد رفض تغيير الرابط القديم ، وبدلاً من ذلك كان يقوم بتحديث الرابط C: Program Filesnodejs. لذلك أزلت D: softnodejs وتم إصلاحه.

بفضل delepster الذي اقترح إلغاء تثبيت العقدة القديمة ، ساعدني ذلك في اكتشاف المشكلة

قمنا بالتثبيت على ثلاثة أجهزة كمبيوتر اليوم ، اثنان منهم نظام التشغيل windows 10 مثبت والآخر مع windows server. فقد الجهازان اللذان يعملان بنظام التشغيل windows 10 البحث عند ميزات بدء التشغيل ولكن ليس الجهاز الذي يعمل بنظام التشغيل Windows Server OS. لذلك ، لا يمكنك كتابة اسم البرنامج الذي تريده وتراه بعد الآن.

أي شخص آخر وجود نفس المشكلة؟

putko ، هذه مشكلة Windows ظهرت اليوم ، وأكدتها MS وتم إصلاحها. شاهد هذه التغريدة https://twitter.com/tomwarren/status/1225110095010418689

الحل:
تمت إعادة تسمية "C: Program Filesnodejs" إلى "C: Program Filesnodejsx" ،
ثم من cmd مرتفع يسمى "استخدام nvm 8.9.1" (أي نسخة حصلت عليها يجب أن تعمل ..) وبدأت في العمل.
يبدو أن المشكلة تكمن في وجود دليل nodejs ، ولا يمكن لـ nvm تغييره إلى ارتباط رمزي و "يفشل بصمت" سيكون أمرًا رائعًا مع فشل ورسالة خطأ توضح المشكلة.

هذا عمل لي.
image

PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v10.11.0
PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v11.4.0

هذا عمل لي ايضا.

واجهت مشكلة مماثلة مع 1.1.7 ، اكتشفت أخيرًا أنه تم تجاهل الملف settings.txt . nvm use لن يفعل شيئًا على الإطلاق ، حتى أقوم بتعيين NVM_SYMLINK يدويًا. أيضًا ، بدون مجموعة SYMLINK ، ستحاول nvm إزالة . ، وهو أمر مثير للاهتمام ، على أقل تقدير.

المعلمة path في settings.txt ، والتي تحتوي على ما يجب استخدامه افتراضيًا مثل SymLink ، لا يتم قراءته أو استخدامه للتهيئة:
https://github.com/coreybutler/nvm-windows/blob/88353cfcea140e02e2b13584fd89454adc9f52b3/src/nvm.go#L727 -L751

أحدث إصدار من Windows 10 Pro حيث أجريت تثبيتًا جديدًا واجهت نفس المشكلة.

خطواتي المعتادة لإعداد جهازي هي:

  1. تثبيت التبعيات الأساسية (NodeJS و Docker)
  2. قم بتثبيت IDE (Visual Studio 2019 في هذه المرحلة باستخدام .NET و NodeJS و Python Development deps)
  3. قم بتثبيت تبعيات إضافية مثل Windows Terminal ، وخطوط PL ، و nvm ، و tmux ، و WSL2 ، إلخ ...

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

أعلم أن هناك في الواقع سطرًا يقول إنه يجب علينا إلغاء تثبيت العقدة الحالية التي فاتني في المرة الأولى على README.md ولكن بعد أن استخدمت nvm-windows قبل أن لم أتحقق منها مرة أخرى ، قمت بتثبيتها عبر chocolatey ونسيت ذلك . (هل من الممكن فقط إلغاء تثبيت npm كجزء من التثبيت لـ chocolatey أو اكتشاف ما إذا كان هناك واحد فقط ومطالبة المستخدم بإلغاء تثبيته أولاً قبل السماح له بتثبيت nvm؟)

(هل من الممكن فقط إلغاء تثبيت npm كجزء من التثبيت لـ chocolatey أو اكتشاف ما إذا كان هناك واحد فقط ومطالبة المستخدم بإلغاء تثبيته أولاً قبل السماح له بتثبيت nvm؟)

أعتقد أنه من الممكن: يجب تقديم هذا الطلب إلى مشرف صيانة

يحدث ذلك عندما يكون لديك Node مثبتًا بشكل منفصل على جهازك (من موقع الويب أو مدير الحزم). يجب أن يؤدي إلغاء تثبيتها وتثبيتها من خلال nvm إلى حل المشكلة.

أواجه نفس المشكلة واستخدام PS في وضع المسؤول لا يحل المشكلة. (Windows 10.0.18363)

image

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

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

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

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

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

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

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