এনপিএম গ্লোবাল ইনস্টল "মডিউলটি খুঁজে পাচ্ছে না"


206

আমি একটি মডিউল লিখেছিলাম যা আমি এনপিএম থেকে কিছুক্ষণ আগে প্রকাশ করেছি (https://npmjs.org/package/wisp)

সুতরাং এটি কমান্ড লাইন থেকে সূক্ষ্ম ইনস্টল করে:

$ npm i -g wisp

যাইহোক, আমি যখন কমান্ড লাইন থেকে এটি চালাচ্ছি, তখন আমি একটি ত্রুটি পেতে থাকি যা আশাবাদী ইনস্টল করা হয়নি:

$ wisp 
Error: Cannot find module 'optimist'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/usr/local/lib/node_modules/wisp/wisp:12:10)
    at Object.<anonymous> (/usr/local/lib/node_modules/wisp/wisp:96:4)
    at Module._compile (module.js:449:26)
    at Object.exports.run (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:68:25)
    at compileScript (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:135:29)
    at fs.stat.notSources.(anonymous function) (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:110:18)

যাইহোক, আমি প্যাকেজ.জসনে একটি নির্ভরতা হিসাবে নির্দিষ্ট করেছি:

{
  "name": "wisp",
  "author": "Brendan Scarvell <bscarvell@gmail.com>",
  "version": "0.1.0",
  "description": "Global nodejs file server",
  "dependencies": {
    "optimist": "~0.3.4"
  },
  "repository": "git://github.com/tehlulz/wisp",
  "bin": {
    "wisp" : "./wisp"
  }
}

কেউ কি জানেন যে এই দৌড়াতে কী করতে হবে? আমি জানি যে এটি বিন অংশটি নির্বাহযোগ্য বিন এবং এই ডিরেক্টরিতে নোড_মডিউলগুলি ফাঁকা থাকার সাথে যুক্ত করছে। কীভাবে সমাধান করবেন তা ধারণা নেই।


আপনি যদি -g বিকল্প ব্যতীত ইনস্টল করেন তবে কী হবে?
বিনায়ার

এটি বর্তমান ডিরেক্টরিতে একটি নোড_মডিউল ফোল্ডার ইনস্টল করে যা এর ভিতরে উইসপ রয়েছে।
মেনজট্রুয়াল

আমি জানি. তবুও কি ত্রুটি হয়?
বিনায়ার

হাঁ। আমি যদি স্থানীয় এনপিএম আই
ওয়াস্প করার পরে উইসপ

আমি সবেমাত্র আপনার মডিউল ইনস্টল করেছি। এটা আমার জন্য ভাল কাজ করছে। কোথায় তোমার বুদ্ধিমান? আমার ক্ষেত্রে আমি দৌড়েছি ./node_modules/wisp/wispযা ভাল কাজ করে।
বিনায়ার

উত্তর:


370

অন্য কারও পক্ষে এটির জন্য দায়ী নয়, npmএমন কোনও স্থানে যা আমার নেই এটি আমার ইনস্টল করার কারণে আমার এই সমস্যা হয়েছিল NODE_PATH

[root@uberneek ~]# which npm
/opt/bin/npm
[root@uberneek ~]# which node
/opt/bin/node
[root@uberneek ~]# echo $NODE_PATH

আমার NODE_PATH খালি ছিল এবং চলমান npm install --global --verbose promised-ioদেখায় যে এটি এতে ইনস্টল হচ্ছে /opt/lib/node_modules/promised-io:

[root@uberneek ~]# npm install --global --verbose promised-io
npm info it worked if it ends with ok
npm verb cli [ '/opt/bin/node',
npm verb cli   '/opt/bin/npm',
npm verb cli   'install',
npm verb cli   '--global',
npm verb cli   '--verbose',
npm verb cli   'promised-io' ]
npm info using npm@1.1.45
npm info using node@v0.8.4
[cut]
npm info build /opt/lib/node_modules/promised-io
npm verb from cache /opt/lib/node_modules/promised-io/package.json
npm verb linkStuff [ true, '/opt/lib/node_modules', true, '/opt/lib/node_modules' ]
[cut]

আমার স্ক্রিপ্টটি ব্যর্থ require('promised-io/promise'):

[neek@uberneek project]$ node buildscripts/stringsmerge.js 

module.js:340
    throw err;
          ^
Error: Cannot find module 'promised-io/promise'
    at Function.Module._resolveFilename (module.js:338:15)

আমি সম্ভবত উত্স থেকে নোড এবং এনপিএম ইনস্টল করেছি configure --prefix=/opt। আমি জানিনা কেন এটি তাদের ইনস্টলড মডিউলগুলি সন্ধান করতে অক্ষম করে তুলেছে। এখনকার স্থিতিটি সঠিক ডিরেক্টরিতে NODE_PATH নির্দেশ করতে হবে:

export NODE_PATH=/opt/lib/node_modules

আমার require('promised-io/promise')এখন সফল।


10
কোথায় এই NODE_PATH সেট করবেন?
বেলে

8
@Sandy যেখানে আপনি NODE_PATH এনভায়রনমেন্ট ভেরিয়েবল সেট করেছেন সেখানে আপনার অপারেটিং সিস্টেমের উপর নির্ভর করে। আমি লিনাক্সের স্বাদ ব্যবহার করছি, তাই আমি export NODE_PATH=...এটি স্থানীয় শেলের মধ্যে সেট করে রাখতাম যে এটি সেই শেলটিতে চালিত কমান্ডগুলিতে রফতানি হয়। পরিবর্তনটি অবিচল করতে বা সমস্ত শেলের জন্য উপলভ্য করতে, এটি। প্রোফাইলে বা অনুরূপে রাখুন। সামগ্রিকভাবে ধারণাটি নবজাতকের জন্য বিরক্তিকরভাবে জটিল, হেল্প.বুন্টু . com/ কম্যুনিটি / এনভায়রনমেন্ট ভেরিয়েবলগুলি পড়ার চেষ্টা করুন । উইন্ডোজের জন্য, আপনি লিনাক্সে স্যুইচ করতে চাইবেন। ঠিক আছে, মজা করছি। Computerhope.com/issues/ch000549.htm চেষ্টা করুন বা এটি গুগল করুন।
নিখ

13
ওএসএক্স সিংহের জন্য, নিম্নলিখিতগুলি আমার জন্য কাজ করেছে ... রফতানি করুন NODE_PATH = / usr / স্থানীয় / lib / নোড_মডিউলগুলি সঠিক পথটি অনুসন্ধান করতে আমি 'সনাক্ত নোড_মডিউলস' ব্যবহার করেছি।
k1eran

2
NODE_PATH WINDOWS এর জন্যও কাজ করে। এটি নোড মডিউলগুলির মূল এবং স্থানীয়ভাবে এবং বিশ্বব্যাপী উভয়ই ইনস্টল করা যেতে পারে।

5
আপনি যদি ম্যাক ওএস এক্সে হোমব্রিউ সহ নোড.জেএস ইনস্টল করেন: open -a TextEdit ~/.bash_profileটার্মিনালটিতে রান করুন, তারপরে export NODE_PATH=/usr/local/lib/node_modulesফাইলটির শেষে যুক্ত করুন। টার্মিনাল উইন্ডোটি পুনরায় চালু করুন। এখন চলমান echo $NODE_PATHমুদ্রণ করা উচিত /usr/local/lib/node_modules
পিডব্লিউডি

39

এটি প্রগের শুরুতে (ম্যাক) যুক্ত করুন:

module.paths.push('/usr/local/lib/node_modules');


4
কোনও অ-ওএস নির্দিষ্ট উপায়ে এটি করার কোনও উপায়?
আপক্রিক

@ ইউপ দ্য ক্রিক এটি একটি অ-ওএস নির্দিষ্ট উপায়। এটি জেএস কোড, আপনার কেবল একটি নোড_মডিউলগুলির দিকে নির্দেশ করতে হবে যা মডিউলটি আপনি খুঁজছেন
অ্যাডেলিন

@ অ্যাডেলিন - এটি একটি ওএস নির্দিষ্ট সমাধান কারণ গ্লোবাল নোড_মডিউলগুলির অবস্থান ওএস নির্দিষ্ট। যেমন আপনি যদি উইন্ডোতে বিকাশ করছেন এবং উত্পাদনে লিনাক্স চালাচ্ছেন তবে এটি দুর্দান্ত সমাধান নয়।
আপক্রিক 11

এটি সহজেই কাটিয়ে উঠেছে। উদাহরণস্বরূপ, আপনি একটি এনভিভি ভেরিয়েবলে নোড পাথ সংরক্ষণ করতে পারেন, উদাহরণস্বরূপ, এবং হার্ডকোডযুক্ত পথটি os.environ.nodepath(এই লাইনগুলির সাথে কিছু) দিয়ে প্রতিস্থাপন করতে পারেন।
আদেলিন

ম্যাকোস মোজভেভ 10.14.6 এর জন্য। / বাশ_প্রফাইলে NODE_PATH = / usr / স্থানীয় / lib / নোড_মডিউলগুলি / এনএপি / নোড_মডিউলগুলি যুক্ত করতে হবে যা দেশীয় .js কোডটি প্রভাবিত নয় এমন আরও মেশিন স্বতন্ত্র।
vwvan

16

ডিফল্টরূপে নোড বিশ্বব্যাপী মডিউল লোড করার জন্য / usr / স্থানীয় / lib / নোড_মডিউলটির মধ্যে দেখতে পায় না। Http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders- এ উল্লিখিত মডিউল লোডিংটি দেখুন

সুতরাং আপনার 1) NODE_PATH এ / usr / local / lib / node_module যুক্ত করুন এবং এটি রফতানি করুন বা 2) ইনস্টল নোড মডিউলগুলি / usr / স্থানীয় / lib / নোডে অনুলিপি করুন। (মডিউল নোড লোড করার জন্য লিঙ্কে বর্ণিত হিসাবে এই পথে অনুসন্ধান করবে এবং কাজ করবে)


10

কারও জন্য (আমার মতো) যা অন্য কোনও কাজ করেনি, এটি চেষ্টা করুন:

brew cleanup
brew link node
brew uninstall node
brew install node

আশা করি এটি কাউকে সাহায্য করবে :)


9

নিম্নলিখিত জেনেরিক ফিক্স যে কোনও মডিউল জন্য হবে। উদাহরণস্বরূপ সঙ্গে request-promise

প্রতিস্থাপন করা

npm install request-promise --global

সঙ্গে

npm install request-promise --cli

কাজ ( উৎস জন্য) এবং globalsএবংinherits

এছাড়াও, পরিবেশ পরিবর্তনশীল সেট করার চেষ্টা করুন

NODE_PATH=%AppData%\npm\node_modules

8

আমি "আশাবাদী" মডিউল ত্রুটি পেয়েছি এবং এটি সমাধানের জন্য আমি কেবল "এনপিএম ইনস্টল" করেছি। এই ত্রুটি গত হয়েছে।

https://github.com/mbloch/mapshaper/issues/12


3

im vim /etc/profile.d/nodejs.sh

NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
export NODE_PATH="$NODE_PATH"

এটি সেখানে ডিফল্টরূপে। ব্যবহারকারীদের জন্য এটি লোড হয়েছে, তবে রুট হিসাবে চালানোর সময় এটি নয়, সুতরাং রুট ব্যবহারকারীর পথে অন্তর্ভুক্ত করা দরকার।
স্ট্যামস্টার

2

উইন্ডোজের জন্য, নোডেজ থেকে উইন্ডোজ ইনস্টলড মডিউলটি খুঁজে পাচ্ছেন না? আমার জন্য যা কাজ করেছে তা এনপিএম লিঙ্কটি চলছে

npm link wisp

যদিও সাবধানতার একটি শব্দ - আমি এটি করেছি কিন্তু তখন আমার জিপ কোডটি এডাব্লুএস ল্যাম্বডায় ব্যবহার করতে পারিনি। আমি যেমন স্থানীয়ভাবে নির্মিত node_module আছে ছিল npm install wisp --save(-G বিকল্প ছাড়া)
প্রধানমন্ত্রী

2

ম্যাক ব্যবহারকারীর সেরা ব্যবহারের জন্য ম্যানুয়াল ইনস্টলেশনটি ব্যবহার করুন:

অনুমতি ত্রুটির সম্ভাবনা হ্রাস করতে, আপনি আলাদা ডিরেক্টরি ব্যবহার করতে এনপিএম কনফিগার করতে পারেন। এই উদাহরণে, এটি আপনার হোম ফোল্ডারে একটি গোপন ডিরেক্টরি হবে directory

  1. আপনি শুরু করার আগে আপনার কম্পিউটারের ব্যাক-আপ করুন।

  2. বৈশ্বিক ইনস্টলেশনগুলির জন্য একটি ডিরেক্টরি তৈরি করুন:

    mkdir ~ / .npm-global

  3. নতুন ডিরেক্টরি পাথ ব্যবহার করতে এনপিএম কনফিগার করুন:

    এনএমপি কনফিগারেশন উপসর্গ '~ / .npm- গ্লোবাল' সেট করে

  4. একটি ~ /। প্রোফাইল ফাইল খুলুন বা তৈরি করুন এবং এই লাইনটি যুক্ত করুন:

    PATH = ~ / .npm- গ্লোবাল / বিন: export PATH রফতানি করুন

  5. কমান্ড লাইনে ফিরে আসুন, আপনার সিস্টেমের ভেরিয়েবলগুলি আপডেট করুন:

    উত্স ~ /। প্রোফাইল

  6. পরীক্ষা: sudo ব্যবহার না করে বিশ্বজুড়ে একটি প্যাকেজ ডাউনলোড করুন।

    এনপিএম ইনস্টল -জি জিশিন্ট

২-৪ পদক্ষেপের পরিবর্তে, আপনি সংশ্লিষ্ট ENV ভেরিয়েবলটি ব্যবহার করতে পারেন (উদাহরণস্বরূপ যদি আপনি ~ /। প্রোফাইলটি পরিবর্তন করতে চান না):

NPM_CONFIG_PREFIX=~/.npm-global

তথ্যসূত্র: https://docs.npmjs.com/getting-started/fixing-npm-perifications


1

এর Ubuntuঅধীনে চলমান একটি টেস্ট সার্ভারে একই সমস্যা ছিল root। তারপর ব্যবহার করে একটি নতুন ব্যবহারকারী তৈরি useradd -m myuserইনস্টল সবকিছু ( nvm, node, প্যাকেজ) হিসেবে myuser। এখন এটি ভাল কাজ করছে।


1

উইন্ডোজগুলিতে যদি আপনি সবেমাত্র একটি পরিষ্কার ইনস্টল করেন এবং এটি পেয়ে থাকেন তবে আপনাকে আপনার এনপিএম ক্যাশেটি \ অ্যাপডাটা \ রোমিংয়ে ফেলে দিতে হবে


1

আমার ক্ষেত্রে উভয় nodeএবং npmএকই পথে ছিল ( /usr/bin)। NODE_PATHখালি ছিল, তাই npmমধ্যে বিশ্বব্যাপী মডিউল স্থাপন /usr/lib/node_modulesযেখানে require(...)সফলভাবে তাদের খুঁজে বার। একমাত্র ব্যতিক্রম ছিল npmমডিউলটি, যা নোডেজ প্যাকেজ নিয়ে এসেছিল। যেহেতু আমি bit৪ বিট সিস্টেমটি ব্যবহার করছি, এটি এতে স্থাপন করা হয়েছিল /usr/lib64/node_modules। খালি NODE_PATHএবং নোডের ক্ষেত্রে যেখান থেকে (...) অনুসন্ধানগুলি শুরু হয়েছিল এটি এটি নয় /usr/bin। সুতরাং আমার দুটি বিকল্প ছিল:

  • লিংক /usr/lib64/node_modules/npmথেকে/usr/lib/node_modules/npm
  • থেকে মডিউল সরানো /usr/lib/node_modules/*করতে /usr/lib64/node_modules/এবং সেটNODE_PATH=/usr/lib64/node_modules

দুজনেই কাজ করেছেন। আমি ওপেনসুএস 42.1 এবং আপডেট সংগ্রহস্থল থেকে নোডেজ প্যাকেজটি ব্যবহার করছি। সংস্করণ 4.4.5।


1

আমি এটি সহজ উপায়ে করেছি ...

  1. নিয়ন্ত্রণ প্যানেল [উইন্ডোজ]] থেকে আন-ইনস্টল নোড
  2. আবার নোড ইনস্টল করুন
  3. প্রটেক্টর ইনস্টল করুন npm install --global --verbose protractor
    ওয়েব ড্রাইভার ম্যানেজার।

আমার জন্য ভাল কাজ করে।

আশা করি এটি আপনাকে সহায়তা করবে ....


1

আমি এই ত্রুটিটি পেয়েছি Error: Cannot find module 'number-is-nan'যেখানে মডিউলটি আসলে রয়েছে। এটি কোনও খারাপ / অসম্পূর্ণ নোড.জেএস ইনস্টলের কারণে।

উইন্ডোজের জন্য, যেমন অন্যান্য উত্তরগুলি এটির পরামর্শ দেয়, আপনার একটি পরিষ্কার নোড ইনস্টলেশন দরকার :

  • নোড.জেএস আনইনস্টল করুন
  • দুই ফোল্ডার মুছে ফেলুন npmএবং npm_cacheমধ্যেC:\Users\user\AppData\Roaming
  • উইন্ডোজ পুনরায় চালু করুন এবং নোড.জেএস ইনস্টল করুন
  • চালান npm initবা ( npm init --yesজন্য ডিফল্ট কনফিগ )
  • এর জন্য উইন্ডোজ পরিবেশ পরিবর্তনশীল সেট করুন NODE_PATH। এই প্যাকেজটি যেখানে আপনার প্যাকেজ ইনস্টল করা আছে। এটি সম্ভবত কিছুNODE_PATH = C:\Users\user\node_modules or C:\Users\user\AppData\Roaming\npm\node_modules
  • একটি নতুন সেন্টিমিডি কনসোল শুরু করুন এবং npmভাল কাজ করা উচিত

বিঃদ্রঃ :

নোড.জেএস পুনরায় ইনস্টল করার আগে শেষ পয়েন্টগুলি ব্যবহার করে দেখুন, এটি আপনাকে কিছুটা সময় সাশ্রয় করতে পারে এবং আপনার সমস্ত প্যাকেজ পুনরায় ইনস্টল করা এড়াতে পারে।


1

আমি সবেমাত্র axiosমডিউলটির এই সমস্যাটি পূরণ করেছি । তারপরে আমি এটি চেষ্টা করেছিলাম: চালান rm -rf node_modulesএবং yarn। এবং এটি কাজ করে।


0

আমি ওপি হিসাবে একই ত্রুটি ছিল, কিন্তু আমি যে লগগুলি দেখতে পাচ্ছিলাম তা খনন করে sh: node: command not found

দেখা যাচ্ছে যে / usr / bin / node প্রোগ্রাম (syMLink) এর সাথে আর ইনস্টল করা নেই apt install nodejs। একবার /usr/bin/node' toসিমলিংকড নোডেজগুলি এনএমপি ,ইনস্টল -g @ কৌণিক / ক্লিমে সফল হয়েছে।

ডেবিয়ান এই ইনস্টল করার জন্য সঠিক উপায় apt install nodejs-legacy


0

আমার সিএনভি ভেরিয়েবলগুলিতে আমাকে সি: \ ব্যবহারকারীদের {name ব্যবহারকারী নাম} D অ্যাপডাটা \ রোমিং \ এনপি যুক্ত করতে হয়েছিল এবং তারপরে আমি স্টাফ ইনস্টল করতে পারি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.