NPM: "npm लिंक" मॉड्यूल के बाद नहीं मिला है


88

मैं NodeJS के लिए दो मॉड्यूल विकसित कर रहा हूं, पहला नाम aligatorऔर दूसरा aligator-methods। दूसरा एक काम करने के लिए पहले एक पर निर्भर करता है। मैं एक ही समय में इन दोनों मॉड्यूल को विकसित कर रहा हूं और मैं वैश्विक लिंक चाहता aligatorहूं ताकि मैं इसका उपयोग कर सकूं जैसे कि यह npm रजिस्ट्री पर है और मैंने इसे विश्व स्तर पर स्थापित किया है। ऐसा करने के लिए एनपीएम प्रलेखन कहता है कि मुझे उपयोग करने की आवश्यकता है npm linkलेकिन यह काम नहीं कर रहा है।

package.jsonमॉड्यूल की फाइल aligator:

{
  "name": "aligator",
  "version": "0.0.1",
  "description": "",
  "main": "index.js",
  "private": true,
  "directories": {
    "doc": "docs",
    "example": "examples",
    "test": "spec"
  },
  "scripts": {
    "test": "gulp jasmine"
  },
  "license": "MIT",
  "devDependencies": {
    "gulp": "^3.6.2",
    "gulp-jasmine": "^0.2.0",
    "gulp-jshint": "^1.6.1",
    "gulp-rename": "^1.2.0",
    "jasmine-node": "^1.14.3"
  },
  "dependencies": {
    "bluebird": "^1.2.4",
    "lodash": "^2.4.1",
    "mathjs": "^0.22.0"
  }
}

package.jsonमॉड्यूल की फाइल aligator-methods:

{
 "name": "aligator-methods",
 "version": "0.0.1",
 "description": "",
 "main": "index.js",
 "private": true,
 "directories": {
   "doc": "docs",
   "example": "examples",
   "test": "jasmine"
 },
 "scripts": {
   "test": "gulp jasmine"
 },
 "author": "",
 "license": "MIT",
 "devDependencies": {
   "gulp": "^3.6.2",
   "gulp-jasmine": "^0.2.0",
   "gulp-jshint": "^1.6.1",
   "gulp-rename": "^1.2.0",
   "jasmine-node": "^1.14.3"
 },
 "dependencies": {
   "lodash": "^2.4.1",
   "mathjs": "^0.22.0",
   "aligator": "^0.0.1"
 }
}

सबसे पहले मैंने मॉड्यूल को विश्व स्तर पर जोड़ा:

$ cd ~/aligator
$ npm link
/usr/local/lib/node_modules/aligator -> /Users/roc/aligator

यदि मैं गलत नहीं हूँ, तो मैंने अपने मॉड्यूल का वैश्विक संदर्भ बनाया है aligatorऔर अब मैं इस मॉड्यूल का उपयोग कंप्यूटर में हर जगह से कर सकता हूँ।

फिर मैं दूसरे मॉड्यूल में गया और निर्भरता स्थापित करने की कोशिश की लेकिन इसने मुझे यह आउटपुट दिया:

$ cd ~/aligator-methods
$ npm install
npm ERR! 404 404 Not Found: aligator
npm ERR! 404
npm ERR! 404 'aligator' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it
npm ERR! 404 It was specified as a dependency of 'aligator-methods'
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, or http url, or git url.

npm ERR! System Darwin 13.2.0
npm ERR! command "node" "/usr/local/bin/npm" "install"
npm ERR! cwd /Users/roc/aligator-methods
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.4.16
npm ERR! code E404
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/roc/aligator-methods/npm-debug.log
npm ERR! not ok code 0

मैंने भी इसे सीधे लिंक करने की कोशिश की:

$ cd ~/aligator-methods
$ npm link aligator
/Users/roc/aligator-methods/node_modules/aligator -> /usr/local/lib/node_modules/aligator -> /Users/roc/aligator

लेकिन यह भी काम नहीं किया।

यह क्या हो रहा है पर कोई विचार? मैंने कहीं पढ़ा कि शायद नोड और एनपीएम की मेरी स्थापना के साथ इसका कुछ करना था क्योंकि यह होमब्रे द्वारा बनाया गया था और इसलिए कभी-कभी मुझे उपयोग करने की आवश्यकता होती है sudo, यह संभावना नहीं लगती थी, लेकिन मैंने कोशिश की कि उन्होंने जो प्रस्तावित किया था और वह भी काम नहीं किया।


पोस्ट किए गए कोड में, पहले मॉड्यूल का नाम वर्तनी है aligtorऔर आप इसे दूसरे मॉड्यूल के रूप में संदर्भित करने का प्रयास करते हैं aligator। जिससे आपकी निर्भरता भी कम हो सकती है।
ब्रूनो टोफोलो

@BrunoToffolo हाँ, आप सही हैं, लेकिन, इस मामले में, यह पोस्ट में सिर्फ एक गलत वर्तनी थी। मैंने इसे सही किया है, धन्यवाद।
रूह

मेरे दुखी जीवन को धोखा देने वाले वेबपैक विन्यास के 4 घंटे खो दिए: / आपने मेरी जान बचा ली! +1
टॉम सरदयू

8
वाह , mainमेरे साथ भी यही समस्या थी package.json, आपके उत्तर को ठीक करने के लिए धन्यवाद!
परिपक्व

अगर आप इस सवाल का जवाब मिल गया है, यह है कि एक :) के साथ हल जवाब के रूप में है कि पोस्ट और प्रश्न सेट करने के लिए एक अच्छा विचार होगा
अल्बर्टो एस

जवाबों:


39

मैं एनवीएम की वजह से इस मुद्दे पर भाग गया, मैं निर्भरता के लिए नोड का एक संस्करण और आश्रित के लिए एक और चला रहा था।


1
क्या आप या कोई अन्य व्यक्ति इस स्थान से जुड़ सकता है जहां संयोग से इसे हल किया जा सकता है?
केविन डानिकोव्स्की

4
मेरे मामले में मुझे दोनों संकुल पर 'nvm उपयोग <VERSION>' चलाने की आवश्यकता है, जहाँ VERSION दोनों पैकेजों के लिए समान था।
linuxdan

29

package-lock.jsonफिर हटाकर फिर npm installसे मेरे लिए समस्या हल हो गई।


2
यह मौजूदा मुद्दे को हल कर सकता है लेकिन संभवतः कुछ बड़े लोगों को बनाता है। लॉक फाइलें बहुत महत्वपूर्ण भूमिका निभाती हैं और इन्हें हटाया नहीं जाना चाहिए । संक्षेप में: इसका तंत्र जो यह सुनिश्चित करता है कि प्रत्येक टीममेम्बर सटीक समान निर्भरता का उपयोग कर रहा है। आप स्टैक ओवरफ़्लो पर इस उत्तर की जांच कर सकते हैं: stackoverflow.com/questions/54124033/… लेकिन डॉक्स में मौजूद कारण के माध्यम से पढ़ना एक अच्छी शुरुआत है। docs.npmjs.com/files/package-lock.json
SKuijers

मैं इस उत्तर को उखाड़ने के लिए तैयार हूँ अगर कोई बोल्ड संकेत देता है कि यह पूरी तरह से अंतिम उपाय होना चाहिए। जैसा कि @SKuijers बताते हैं, लॉक फाइलें निर्भरता संस्करणों को बनाए रखने में एक आवश्यक भूमिका निभाती हैं। निश्चित रूप से, निर्भरता संस्करणों को भी नीचे बंद कर दिया गया है package.json, लेकिन ज्यादातर समय मैं देखता हूं कि package-lock.jsonया yarn.lockइसके लिए द्वारपाल रहे हैं।
फ्रॉस्टडॉग

28

समस्या यह थी कि की mainसंपत्ति package.jsonएक गैर-मौजूदा फ़ाइल की ओर इशारा कर रही थी। ऐसा लगता है कि समस्या कई कारणों से हो सकती है इसलिए अन्य उत्तरों पर एक नज़र रखना सुनिश्चित करें।


omg मैं इस 50 बार उत्थान करना चाहता हूं और प्रत्येक उत्थान के लिए एक बार खुद का सामना करना पड़ता है।
बेन

यह जानना दिलचस्प है कि परियोजना की आवश्यकता है main। ज्यादातर मैंने इसके बिना किया, लेकिन लगता है कि यह इन छोटे मुद्दों को पैदा करता है।
cst1992 12

अच्छा लगा! मैंने आपका उत्तर देखा और तुरंत पता चल गया कि यह मेरा मुद्दा है :)।
23

11

जब आप पहली बार निर्देशिका npm linkसे चलते aligatorहैं, तो आप अपने वैश्विक नोड_मॉड्यूल निर्देशिका से एक लिंक बनाते हैं aligator। फिर जब आप निर्देशिका npm link aligatorसे चलते aligator-methodsहैं, तो आप aligatorअपने स्थानीय रूप से स्थापित नोड_मॉडल से मूल स्रोत से लिंक करते हैं (जैसा कि ऊपर दिए गए उदाहरण में आउटपुट दिखाता है)। एक बार यह पूरा हो जाने के बाद, अब स्थापित होने की आवश्यकता नहीं होनी चाहिए क्योंकि यह पहले से ही "स्थापित" है। npm link aligatorकमांड चलाने के बाद आप क्या त्रुटियाँ देख रहे हैं ?

यदि आप किसी स्थानीय निर्देशिका से निर्भरता स्थापित करना चाहते हैं, तो आप npm installइसके बजाय केवल उपयोग करने का प्रयास कर सकते हैं। उदाहरण के लिए:

$ cd ~ / aligator-methods
$ npm install ../igigator


5
इसे हल करने के आपके प्रयास के लिए धन्यवाद। मेरी npm linkकोई त्रुटि नहीं दिखी। मेरे मामले में समस्या यह थी कि संपत्ति mainगैर-मौजूदा फ़ाइल की ओर इशारा कर रही थी। मेरे लिए npm installआप सही हैं, मुझे कुछ भी स्थापित करने की आवश्यकता नहीं थी npm link। इसके लिए धन्यवाद कि मैं यह नहीं जानता था।
Roc

1
मुझे वही समस्या हो रही है, लेकिन कोई समाधान नहीं मिला है ... अगर मैं व्यक्तिगत रूप से प्रत्येक लिंक किए गए पैकेज की आवश्यकता है, तो सभी एक काम करता है ... जो काम नहीं करता है वह कहता है: "त्रुटि: मॉड्यूल का पता नहीं लगा सकता है" मैं बस से जुड़े ' "।
माइकल

@ मिचेल को ऐसा लगता है कि मेरे पास एक गहरी निर्देशिका में एक ऐसा नेस्टेड था जो "डायनामिकली" कोशिश कर रहा था, उसे उस मॉड्यूल की आवश्यकता थी जो विफल हो रहा था (यानी स्ट्रिंग के नाम की आवश्यकता होती है) (मॉड्यूल को पारित किया गया था), इसलिए मुझे एनपीएम करना पड़ा गहरी निर्देशिका में लिंक।
माइकल

4

मेरा मुद्दा समाप्त हो रहा है कि रेपो ए का उपयोग कर रहा था npmऔर रेपो बी का उपयोग कर yarnरहा था , इसलिए मुझे रेपो ए के yarn linkमाध्यम से इसे खींचने के लिए रेपो बी में चलाने की आवश्यकता थी npm link package-name


आप, सर, मेरा दिन बना दिया! साभार
एलेक

2

इस समस्या के मेरे संस्करण के लिए ठीक करें; npm v5.3.0 में, मैंने node_modulesरेपो से हटा दिया मैं दूसरे प्रोजेक्ट में लिंक कर रहा था।

मुझे पता चला कि npm v3 के बाद वे सभी नोड_modules निर्भरता को एक नोड_modules निर्देशिका (आपकी परियोजना में एक) में डालकर यथासंभव संरचना को समतल करने की कोशिश करते हैं ( http://codetunnel.io/nn-5-changes-to-npm -लिंक / )।


2

मेरे लिए क्या काम किया गया था:

  1. node_modulesनिर्भरता और उपभोक्ता मॉड्यूल दोनों में हटाएँ ।
  2. Daud npm unlink --no-save [dependency-module]
  3. npm- लिंक के अनुसार 2-लिंक कमांड के साथ फिर से लिंक करें

अब मैं अपने अप्रकाशित मॉड्यूल का स्थानीय स्तर पर पूरी तरह से परीक्षण करने में सक्षम हूं।

इसके अतिरिक्त, एक एनपीएम पैक कमांड है जो आपको अपने अप्रकाशित मॉड्यूल का परीक्षण करने में मदद कर सकता है, हालांकि काफी मजबूत नहीं है।

NPM-पैक


1

मेरे लिए यह तब हुआ जब मैंने अपने स्थानीय पैकेज की संस्करण संख्या को 0.1.0 से घटाकर 0.0.1 कर दिया। और जिन परियोजनाओं में मैं इस पैकेज से जुड़ा था, मैं अभी भी उच्च संस्करण संख्या का उपयोग कर रहा था। package.jsonइसे निर्धारित करने में निर्भरता अद्यतन करना ।


0

सहकर्मी निर्भरता का उपयोग करते समय

मैं दो पैकेज विकसित कर रहा हूं stejs, और stejs-loaderstejs-loaderहै stejsएक के रूप में peerDependency। जब मैं भागा npm link stejs-loaderऔर npm link stejsमेरे प्रोजेक्ट में मुझे एक त्रुटि stejs-loaderमिली जो नहीं मिली stejsnpm link stejsकी निर्देशिका में चल कर मैंने इसे ठीक किया stejs-loader


0

Tsconfig मॉड्यूल की जाँच करें

अगर मेरी तरह, आपने tsconfig को या कुछ और moduleसे बदल दिया , तो डिफ़ॉल्ट बदल गया हो सकता है।es5esnextmoduleResolution

moduleResolution"नोड" पर सेट किए बिना , टाइपस्क्रिप्ट नोड_मॉडल पैकेज को हल नहीं करेगा।

आप कंपाइलर विकल्प पेज पर पढ़ सकते हैं कि डिफ़ॉल्ट मान किस तरह के मूल्य पर निर्भर करता है module, जिसके बदले में डिफ़ॉल्ट निर्भर करता है target- लेकिन संभवतः इसे "नोड" पर स्पष्ट रूप से सेट करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.