سؤال

أحاول تثبيت jsdom مثل:

$ sudo npm install -g jsdom
# OR
$ sudo npm install    jsdom

بعد نجاح بعض الأوامر، يفشل التثبيت سريعًا، وتظهر رسالة الخطأ الأولى بعد [....] :

$ sudo npm install jsdom 
npm http GET https://registry.npmjs.org/jsdom
npm http 304 https://registry.npmjs.org/jsdom
[....]

> contextify@0.1.7 install /home/yug/Desktop/QGis/WikiAtlas/1_shaded_relief/test/node_modules/jsdom/node_modules/contextify
> node-gyp rebuild

gyp: /home/yug/.node-gyp/0.10.25/common.gypi not found (cwd: /home/yug/Desktop/QGis/WikiAtlas/1_shaded_relief/test/node_modules/jsdom/node_modules/contextify) while reading includes of binding.gyp
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:337:16)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:797:12)
gyp ERR! System Linux 3.8.0-35-generic
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/yug/Desktop/QGis/WikiAtlas/1_shaded_relief/test/node_modules/jsdom/node_modules/contextify
gyp ERR! node -v v0.10.25
gyp ERR! node-gyp -v v0.12.2
gyp ERR! not ok 
npm http 304 https://registry.npmjs.org/domhandler
npm http 304 https://registry.npmjs.org/domelementtype
npm ERR! contextify@0.1.7 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the contextify@0.1.7 install script.
npm ERR! This is most likely a problem with the contextify package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls contextify
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.8.0-35-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "jsdom"
npm ERR! cwd /home/yug/Desktop/QGis/WikiAtlas/1_shaded_relief/test
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.24
npm ERR! code ELIFECYCLE

npm http 304 https://registry.npmjs.org/qs
npm http 304 https://registry.npmjs.org/entities
....

تَلمِيح؟يظهر هذا الخطأ أيضًا في الوحدات الأخرى:

 $sudo npm install -g topojson 
 #bug with `contextify@0.1.7 install` error as well.

enter image description here

كيفية اصلاح ذلك ؟


يحرر: حاولت sudo apt-get remove --purge nodejs npm topojson ثم إعادة التثبيت بطرق مختلفة. حتى عندما nodejs تمت إعادة التثبيت بنجاح، ويظل الخطأ قائمًا, ، لذلك أعتقد أنه سياقي إلى حد ما (node.gyp ? cwd ؟...).إزالة/إعادة تثبيت الطرق التي تمت تجربتها:

هل كانت مفيدة؟

المحلول 2

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

0.سياق: لقد قمت سابقًا بإجراء عدة عمليات تنظيف غير ناجحة لوحدة التحكم باستخدام

sudo apt-get remove --purge nodejs npm topojson

تليها ~ 3 طرق مختلفة لإعادة التثبيت nodejs.لقد جربت كل الطرق، بدءًا من التنظيف وحتى إعادة التثبيت، ما بين 2 و4 مرات.

1.تطهير المحطة: دعونا أولاً نقوم بتنظيف الفوضى التي أعانيها بأعمق طريقة ممكنة:

npm cache clean; bower cache clean; grunt clean;
sudo apt-get remove --purge nodejs npm topojson

ومع ذلك، لاحظت ذلك للتو لا يؤدي هذا التطهير العميق إلى إزالة/حذف وحدات العقد المثبتة, ، والتي تبقى ثابتة.

2.تطهير اليد: كما أنني دفعت عملية التطهير إلى أبعد من ذلك من خلال تطهير اليد لكليهما nodejs و node_modules.لقد بحثت عن الجميع المجلدات ذات الصلة الموجودة على جهاز الكمبيوتر الخاص بي، بالقرب من الجذر (ubuntu: /home/<user>/) الافضل.لقد كنت حريصًا على حذف جميع ملفات global المثبتة مسبقًا .../node-modules/ المجلدات، دون حذف الوحدات المحلية (التثبيتات المحلية المحددة، التي كانت لا تزال تعمل).

3.إعادة التثبيت: ثم سمحت وحدات التحكم التالية بإعادة التثبيت النظيف:

sudo apt-get update
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

sudo npm install -g topojson jsdom

بعد ذلك، تم تحويل ملفي عبر وحدة npm topojson (يعتمد على نفسه jsdom) عملت بشكل جيد:

cd /myfolder/
topojson -o output.topo.json input.geo.json   

4.خاتمة: لا أستطيع تحديد السبب، أي ملف/مجلد سمح بالحذف بنجاح sudo apt-get install nodejs + sudo npm install -g topojson إعادة التثبيت.ولكن هذا هو التنظيف العميق عن طريق الماوس والإزالة العودية sudo rm -r [node related folder/file] مقفلة نهائيا وضعي.

/!\ يكون حذرين للغاية مع ال rm -r إزالة العودية. /!\

نصائح أخرى

وكما تعلم من التعليقات، فهذه مشكلة شائعة جدًا.في الواقع، هذا أمر شائع جدًا لدرجة أن مؤلفي jsdom قاموا بتوثيقه مباشرة في ملف README الخاص بمستودع git الخاص بالمشروع.


ليرة تركية؛ د

يجب أن يكون لديك مترجم C++ وPython2.7 مثبتين على جهازك حتى تتمكن من التثبيت وضع السياق وهو تبعية com.jsdom.وإلا فسيفشل تثبيت jsdom.


من الملف التمهيدي الموجود على صفحة جيثب لـ jsdom:

وضع السياق

يعد contextify تابعًا لـ jsdom، ويستخدم للتشغيل <script> العلامات داخل الصفحة.بمعنى آخر، يسمح لـ jsdom، الذي يتم تشغيله في Node.js، بتشغيل سلاسل JavaScript في بيئة معزولة تتظاهر بأنها بيئة متصفح بدلاً من خادم.يمكنك أن ترى كيف أن هذه ميزة مهمة.

لسوء الحظ، القيام بهذا النوع من السحر يتطلب لغة C++.وفي Node.js ، يعني استخدام C ++ من JavaScript استخدام "الوحدات النمطية الأصلية". يتم تجميع الوحدات الأصلية في وقت التثبيت بحيث تعمل بدقة لجهازك ؛أي أنك لا تقوم بتنزيل ثنائي سياقي من npm، ولكن بدلًا من ذلك قم ببناء واحد محليًا بعد تنزيل المصدر من npm.

لسوء الحظ، قد يكون الحصول على ترجمة C++ ضمن نظام تثبيت npm أمرًا صعبًا، خاصة بالنسبة لمستخدمي Windows.وبالتالي، فإن إحدى المشكلات الأكثر شيوعًا في jsdom هي محاولة استخدامه دون تثبيت أدوات الترجمة المناسبة.إليك ما تحتاجه لتجميع contextify، وبالتالي تثبيت jsdom:

شبابيك

  • نسخة حديثة من الإصدار x86 من Node.js لنظام التشغيل Windows، وليس الإصدار x64.
  • نسخة من Visual C++ 2010 Express.
  • نسخة من Python 2.7، مثبتة في الموقع الافتراضي C:\Python27.

هناك بعض التعديلات الطفيفة التي يمكن أن تنجح؛على سبيل المثال، عادةً ما تعمل الإصدارات الكاملة من Visual Studio، وأحيانًا يمكنك تشغيل إصدار x64 من Node.js أيضًا.لكن الأمر صعب، لذا ابدأ بالأساسيات!

ماك

  • يجب تثبيت XCode
  • يجب تثبيت "أدوات سطر الأوامر لـ XCode".
  • قم بتشغيل XCode مرة واحدة لقبول الترخيص، وما إلى ذلك.والتأكد من تثبيته بشكل صحيح

لينكس

ستحتاج إلى تثبيت العديد من أدوات البناء، مثل make وPython 2.7 وسلسلة أدوات المترجم.ستكون كيفية تثبيتها خاصة بالتوزيع الخاص بك، إذا لم تكن لديك بالفعل.

حاول التثبيت com.jsdom مرة أخرى بعد استيفاء المتطلبات المذكورة أعلاه لنظام التشغيل الخاص بك، ومعرفة ما إذا كان ذلك يحل المشكلة.

بالمناسبة، أنت تواجه نفس المشكلة مع com.topojson لأنه يعتمد على د3 والذي بدوره يعتمد على com.jsdom, ، لذا فهي نفس المشكلة في تثبيت jsdom.أتمنى أن يساعدك هذا!

--يحرر--

نظرًا لأنه يبدو أنك تستخدم Ubuntu، فإنني أوصي بالبدء بالأمر التالي:

sudo apt-get install build-essential

سيتم تثبيت هذا يصنع و ز++ وبعض الأدوات الأخرى.ربما تكون هذه الحزمة وPython2.7 هي كل ما ستحتاجه لتثبيت contextify بنجاح.

الحل 1ب: أنا [أظن] [1] أن rm -r /home/<user>/local/lib/node_modules/ ليكون العنصر الأساسي في فتح الوضع.يمكنك إدراج العالمية (-g)Node_modules، ثم قم بإزالة الوحدة (الوحدات) ذات الصلة (topojson و/أو jsdom و/أو node-gyp) على وجه التحديد، ثم أعد تثبيته (لهم).

الأوامر: على أوبونتو حاول...

 cd /home/<user>/local/lib/node_modules/  #replace <user> by relevant user name to set your cwd
 ls -1      # give the list of global modules names
 rm -r /<module_name>    #replace <module_name> by relevant name to remove it
 sudo npm install -g <module_name>  #replace <module_name> by relevant name for global install

ملحوظة: topojson يعتمد على jsdom و npm-gyp.

[1]:لم يحاكم، ولكن من المنطقي وفقا لتشخيصي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top