node.js - ত্রুটি: EACCES: অনুমতি অস্বীকার, অ্যাক্সেস '/ usr/স্থানীয়/lib/নোড_মডিউল' প্রতিক্রিয়া




reactjs npm (12)

ত্রুটির কারণ কী হতে পারে Error: EACCES: permission denied, access '/usr/local/lib/node_modules' ?

npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!  { Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
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!     /Users/macbookmd101/.npm/_logs/2018-02-21T16_26_08_421Z-debug.log

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

আপনার কম্পিউটার ব্যাক আপ। আপনার হোম ডিরেক্টরিতে কমান্ড লাইনে, বৈশ্বিক ইনস্টলেশনগুলির জন্য একটি ডিরেক্টরি তৈরি করুন: mkdir ~/.npm-global নতুন ডিরেক্টরি পাথটি ব্যবহার করতে mkdir ~/.npm-global কনফিগার করুন: আপনার পছন্দের পাঠ্য সম্পাদকটিতে npm config set prefix '~/.npm-global' , একটি ~/.profile ফাইল খুলুন বা তৈরি করুন এবং এই লাইনটি যুক্ত করুন: export PATH=~/.npm-global/bin:$PATH কমান্ড লাইনে আপনার সিস্টেমের ভেরিয়েবলগুলি আপডেট করুন: উত্স ~/.profile আপনার নতুন কনফিগারেশন পরীক্ষা করতে, sudo ব্যবহার না করে বিশ্বব্যাপী একটি প্যাকেজ ইনস্টল করুন


আপনাকে যা করতে হবে তা হ'ল USER / স্থানীয় / lib এর মালিককে যুক্ত করা

sudo npm install -g [package-name]

আপনি যে কমান্ডটি চেষ্টা করছেন তার আগে sudo যুক্ত করার চেষ্টা করুন।

এই মত: sudo এনপিএম ইনস্টল

লিনাক্স / ইউএনআইএক্স-এ একটি কমান্ড সহ সুডো ব্যবহার করা আপনার অনুমতিগুলি সাধারণত সুপারউজার স্তরে উন্নীত করে। উইন্ডোজে, সুপারভাইজার অ্যাকাউন্টটিকে সাধারণত 'অ্যাডমিনিস্ট্রেটর' বলা হয়। লিনাক্স / ইউনিক্সে সুপারভাইজার অ্যাকাউন্টটির নামকরণ করা হয় সাধারণত 'রুট'।

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

আপনার ক্ষেত্রে, sudo দিয়ে ইনস্টলেশন কমান্ড চালানো আপনাকে সুপারভাইজারের অনুমতি দেয় এবং আপনাকে এমন ফাইলগুলি সংশোধন করতে দেয় যা আপনার সাধারণ ব্যবহারকারীর সংশোধন করার অনুমতি নেই।


আমি nvm ইনস্টল করে, তারপর সর্বশেষ সংস্করণে নোড সেট করে এই সমস্যা থেকে মুক্তি পেতে সক্ষম হয়েছি।

  1. curl ব্যবহার করে এনভিএম ইনস্টল করুন (সর্বশেষ সংস্করণের জন্য এনভিএম.শ যান)
nvm use v10.12
  1. উপলব্ধ নোড সংস্করণ তালিকা
nvm use --delete-prefix v10.12.0

v10.12.0
ডিফল্ট -> v10.12 (-> v10.12.0)
নোড -> স্থিতিশীল (-> v10.12.0) (ডিফল্ট)
স্থিতিশীল -> 10.12 (-> v10.12.0)
...

  1. নোডের কোন সংস্করণ ব্যবহার করবেন তা চয়ন করুন
 nvm use v10.12 

এনভিএম এনপিএম কনফিগারেশন "উপসর্গ" বিকল্পের সাথে সামঞ্জস্যপূর্ণ নয়: বর্তমানে "" এ সেট করা আছে

  1. বিকল্পটি আনসেট করতে এটি চালান:
 nvm use --delete-prefix v10.12.0 

উপরের আদেশগুলি অনুসরণ করার পরে, আপনি উবুন্টুতে প্রতিক্রিয়া / কৌনিকটি ইনস্টল করতে সক্ষম হবেন।


আমি রিঅ্যাক্ট এক্সপো ইনস্টল করার চেষ্টা করছিলাম এবং সুডো ছাড়াও আমাকে যুক্ত করতে হবে --unsafe-perm

এটার মত. এটি আমার সমস্যা সমাধান করে

sudo npm install -g json-server

আমি সুডো ব্যবহার করেছি, তবে এটি সমস্যার সমাধান করতে পারে নি, নোড_মডিউলগুলি ফোল্ডারের অনুমতি পরিবর্তন করে আমি সমস্যার সমাধান করেছি,

npm install -g create-react-app

আপনি যদি চান তবে আপনি 777 অন্য কোনও কোডের সাথে প্রতিস্থাপন করতে পারেন যদি আপনি সমস্ত ব্যবহারকারী / গোষ্ঠীর জন্য অনুমতি সেট না করেন।


দেখে মনে হচ্ছে আপনি অনুমতি সংক্রান্ত সমস্যা নিয়ে চলেছেন। আপনি যদি npm-packages ইনস্টল করছেন তবে বিশ্বব্যাপী কোনও প্যাকেজ ইনস্টল করার চেষ্টা করার সময় আপনি সম্ভবত EACCES ত্রুটি পেয়ে EACCES । এর অর্থ বিশ্বব্যাপী প্যাকেজ এবং কমান্ডগুলি সঞ্চয় করতে npm যে ডিরেক্টরিগুলি ব্যবহার করে সেগুলি আপনার কাছে লেখার অনুমতি নেই।

কমান্ডগুলি চালনার চেষ্টা করুন: sudo chmod u+x -R 775 ~/.npm এবং sudo chown $USER -R ~/.npm বা আপনি কেবল sudo দিয়ে কোনও npm কমান্ড চালাতে পারেন, এটি আপনার সমস্যার সমাধান হওয়া উচিত।

আপনি যদি স্থানীয়ভাবে একটি npm-package ইনস্টল করে থাকেন তবে আপনার স্থানীয় প্রকল্প ডিরেক্টরিতে থাকা উচিত এবং প্রয়োজনীয় প্যাকেজ ইনস্টল করার জন্য sudo npm install <pkg-name> কমান্ড চালানোর চেষ্টা করতে পারেন। sudo ব্যবহারের উদ্দেশ্য হ'ল এটি আপনার মালিকের অনুমতি পরিবর্তন করবে যাতে আপনি আপনার বর্তমান ব্যবহারকারীকে npm কমান্ড চালানোর জন্য অনুমোদিত করতে পারেন।

আমি আপনাকে https://docs.npmjs.com/getting-started/fixing-npm-permissions এ একবার দেখার পরামর্শ দিই


দেখে মনে হচ্ছে আপনি স্থানীয়ভাবে না বরং বিশ্বব্যাপী একটি এনপিএম প্যাকেজ ইনস্টল করার চেষ্টা করেছেন, যেমন man npm install হিসাবে man npm install বর্ণনা করে:

-G বা --global আর্গুমেন্ট স্থানীয়ভাবে না হয়ে বিশ্বব্যাপী প্যাকেজটি ইনস্টল করার জন্য এনপিএম সৃষ্টি করবে।

সাধারণত, আপনি যখন এনপিএম প্রজেক্ট স্থাপন করেন (আপনার কাছে থাকা অনেকের মধ্যে) তখন আপনার ডিবাগ লগ হিসাবে নোড.জেএস গ্লোবাল মডিউলগুলিতে (/ usr / স্থানীয় / lib / নোড_মডিউল) প্যাকেজ ইনস্টল করা ভাল ধারণা নয় সুপারিশ করেছে।

--save ব্যবহারের পরিবর্তে --save ব্যবহার --save , যা প্যাকেজটি স্বয়ংক্রিয়ভাবে আপনার package.json ফাইলের নির্ভরতা হিসাবে সংরক্ষণ করবে:

এটার মত:

$ npm install express-generator --save

$ cat package.json 
{
  "name": "first_app_generator",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
},
  "author": "ivanleoncz",
  "license": "MIT",
  "dependencies": {
    "express-generator": "^4.16.0"
  }
}

তবে উল্লিখিত অন্যান্য উত্তরগুলির মতো, আপনি-- -g ব্যবহার করতে চলেছেন, npm install express-generator -g সঞ্চালনের সময় আপনাকে sudo ব্যবহার করতে হবে ( যদি আপনার ব্যবহারকারীর সুডোর সুবিধাসমূহ থাকে / দেখুন / ইত্যাদি / sudoers ), তবে প্রকৃতপক্ষে, এটি একটি ভাল ধারণা নয়, সম্ভবত অনুমতি সমস্যা তৈরি করে।

বিজ্ঞপ্তি

সিস্টেমের পথে express-cli.js উপলব্ধ করার জন্য -g বিকল্পের সাথে express-generator ইনস্টল করার জন্য নির্দেশাবলী রয়েছে তবে আপনি যদি স্থানীয়ভাবে ইনস্টল করা স্ক্রিপ্টটি node_modules ব্যবহার করতে পারেন তবে আপনার এনপিএম প্রজেক্টটি ব্যবহার করতে পারেন:

$ ./node_modules/express-generator/bin/express-cli.js --view=pug myapp

যদি / usr / bin / env এর মতো কোনও বার্তা : 'নোড': এ জাতীয় কোনও ফাইল বা ডিরেক্টরি প্রদর্শিত না হয়, nodejs-legacy ইনস্টল করুন ( nodejs-legacy / উবুন্টু)

আইএমএইচও, -জি (এছাড়াও sudo ব্যবহার করে) ব্যবহার হিক সান্ট ড্র্যাকোনগুলির মতো , যদি আপনি পরিণতি সম্পর্কে অনিশ্চিত হন।

আরো তথ্যের জন্য:


মূলত / usr / স্থানীয় অধীনে সমস্ত ডিরেক্টরিগুলির মালিককে পরিবর্তন করে এমন সমস্ত প্রতিক্রিয়া সম্পর্কে সতর্ক থাকুন, লিনাক্স সিস্টেমে গোলযোগ করবেন না !!!

আমি মনে করি যে সমস্ত বিশ্বব্যাপী প্যাকেজগুলি সনাক্ত করতে আপনার নিজের ফোল্ডারটি ব্যবহার করা সবচেয়ে ভাল উপায়: https://www.competa.com/blog/how-to-run-npm-without-sudo/


লিনাক্স / উবুন্টুর জন্য যদি কমান্ড হয়

npm install -g <package_name>

nvm ls

ফিক্স: রুট অনুমতি সহ ইনস্টল করুন

sudo npm install <package_name> -g


আপনি যদি ম্যাক এ সমস্যার মুখোমুখি হন। এই পদক্ষেপগুলি অনুসরণ করুন

প্রথমে নীচের কমান্ডটি ব্যবহার করে এই ফাইলটির মালিক কে তা পরীক্ষা করে দেখুন

  id -un                    (in my case user is yamsol)

আপনি কিছু ফাইল পাবেন যেমন তার নীচে একটির নীচে রয়েছে

drwxr-xr-x 3 রুট চাকা 768 মে 29 02:21 নোড_মডিউল

আপনি কি লক্ষ্য করেছেন যে উপরের ফাইলটি রুট অনুসারে নিজস্ব, কারণ পরিবর্তনের জন্য আপনার পথের মালিক জাহাজ পরিবর্তন করতে হবে।

আপনি এই আদেশ দ্বারা বর্তমান ব্যবহারকারী কে চেক ব্যবহার করতে পারেন

  sudo chown -R ownerName: /usr/local/lib/node_modules

এবং তারপরে আপনি এই আদেশটি কল করে পরিবর্তন করতে পারবেন (কেবলমাত্র আপনার ব্যবহারকারী নামটি মালিকের নামের সাথে প্রতিস্থাপন করুন)

  sudo chown -R yamsol: /usr/local/lib/node_modules

আমার ক্ষেত্রে যেমন আপনি জানেন যে ব্যবহারকারী "ইয়ামসোল" আমি এই আদেশটি এইভাবে কল করব

sudo npm install -g expo-cli --unsafe-perm

এটাই.


উবুন্টুতে বিশ্বব্যাপী প্যাকেজ ইনস্টল করার সময়, আপনি usr/bin ফোল্ডারে লিখতে থাকায় আপনার বিশেষ লেখার অনুমতি দরকার। এটি নিরাপত্তাজনিত কারণে। সুতরাং, আপনি যখনই বিশ্বব্যাপী প্যাকেজ ইনস্টল করেন, তখন ব্যবহার করুন:

sudo npm install -g typescript

আপনার নির্দিষ্ট ক্ষেত্রে, এটি হবে:

sudo npm install -g create-react-app 




install