npm ผิดพลาด! ข้อผิดพลาด: EPERM: ไม่อนุญาตให้ดำเนินการเปลี่ยนชื่อ


112

เมื่อฉันดำเนินการnpm installฉันได้รับข้อผิดพลาดนี้

npm ผิดพลาด! ข้อผิดพลาด: EPERM: ไม่อนุญาตให้ดำเนินการเปลี่ยนชื่อ C: \ projects ****** \ node_modules \ react-async-script '->' C: \ projects ******* \ node_modules.react-async-script .ลบ'

  • ฉันใช้ cmd ในฐานะผู้ดูแลระบบ
  • ฉันวิ่งnpm cache cleanมาก่อน
  • ฉันแน่ใจว่าแอปพลิเคชั่นอื่น ๆ ทั้งหมดไม่มีอะไรเกี่ยวข้องกับการnode_modulesเปิด

2
เรียกใช้ cmd ในฐานะผู้ดูแลระบบทำงานให้ฉัน
โฮเมอร์

ในกรณีของฉันฉันต้องเรียกใช้มันในฐานะผู้ใช้ปกติ (ไม่ใช่ผู้ดูแลระบบ) และมันใช้งานได้ดูเหมือนว่าจะมีข้อขัดแย้งในการอนุญาตของผู้ใช้ แต่ดูเหมือนว่าโซลูชันอื่น ๆ ทั้งหมดที่ให้ไว้ที่นี่ npm clean ไม่จำเป็นต้องติดตั้ง npm มันเป็นปัญหาการอนุญาตของผู้ใช้ หากมีคนยืนยันได้มากกว่านี้ฉันสามารถโพสต์คำตอบใหม่ได้
MG Developer

คำตอบ:


130

ในสถานการณ์ของฉันสิ่งนี้ช่วยได้ ก่อนดำเนินการคำสั่งเหล่านี้ให้ปิดอินสแตนซ์ VS Code ทั้งหมด

  1. ล้างแคชด้วย

    npm cache clean --force
  2. ติดตั้ง npm เวอร์ชันล่าสุดทั่วโลกในฐานะผู้ดูแลระบบ:

    npm install -g npm@latest --force
  3. ล้างแคชด้วย

    npm cache clean --force
  4. ลองติดตั้งส่วนประกอบของคุณอีกครั้ง

ฉันหวังว่านี่จะช่วยแก้ปัญหาของคุณได้ มิฉะนั้นคุณอาจปิดใช้งานโปรแกรมป้องกันไวรัสชั่วคราวแล้วลองอีกครั้ง


1
ขอบคุณ @ kamil.ka นี่คือปัญหาของฉันใน Windows Atom กำลังล็อก package.json ดังนั้นการติดตั้ง npm จึงไม่สามารถเปลี่ยนแปลงได้
George

30
ความคิดเห็นเดียวกันกับ VS Code บน Windows ... ปิดและปัญหาจะหายไป
Martin Kearn

1
สำหรับฉันฉันมีกระบวนการโหนดอื่นที่กำลังทำงานอยู่ json-server ในกรณีของฉัน เมื่อฉันหยุดการติดตั้งแพคเกจโดยไม่มีข้อผิดพลาด
EddieB

สำหรับฉันข้อผิดพลาดเช่น "ERR! enoent สิ่งนี้เกี่ยวข้องกับการที่ npm ไม่สามารถค้นหาไฟล์" ได้รับการแก้ไขโดยการยกเลิกอินสแตนซ์ทั้งหมดสำหรับโค้ด Visual Studio
Abhishek

บางครั้งเราดูแลการใช้ webpack ซึ่งบรรจุไฟล์ js ทั้งหมดรวมถึงลิงก์โมดูลที่ไม่ได้อัปเดตเช่น app.js. ดังนั้นหลังจากการปรับปรุง NPM npm run watchลองใช้ หลังจากนั้นในกรณีของฉันลิงก์โมดูลที่เหมาะสมได้รับการอัปเดตในไฟล์ app.js ใหม่
Peter van der Lely

23

ฉันทำให้มันใช้งานได้เมื่อพยายามติดตั้ง npm ด้วยตัวเลือกบังคับเพื่อดึงทรัพยากรระยะไกลแม้ว่าจะมีสำเนาในเครื่องอยู่ในดิสก์ก็ตาม ลองวิ่ง

npm install --force

อัปเดต สำหรับเพื่อนร่วมงานบางคนวิธีนี้ใช้งานไม่ได้ แต่เราลองใช้เส้นด้ายแทน npm มันใช้งานได้ (เร็วขึ้นเช่นกัน) โดยไม่มีปัญหาใด ๆ ตลอดเวลา

yarn install [package-name]

คนอื่น ๆ แนะนำให้ปิดซอฟต์แวร์ AV สำหรับฉันบนเครือข่ายที่ฉันใช้อยู่นี่ไม่ใช่ตัวเลือก แฟล็ก --force แก้ไขปัญหานี้ให้ฉัน
user2590928

ฉันแก้ปัญหาโดยใช้เส้นด้ายเท่านั้นดังนั้นฉันขอแนะนำให้ลองยิงเขา
Ângelo Polotto

22

ไม่package.jsonแต่ไม่ว่าด้วยเหตุผลใดฉันnode_modules/ก็กลายเป็นอ่านอย่างเดียว การรีเซ็ตนั้นแก้ไขสิ่งนี้


"รีเซ็ต" สำหรับผมหมายถึง1.การปิด VS, 2.ลบnode_modulesจาก FileExplorer 3.รีสตาร์ทเครื่องคอมพิวเตอร์ของฉันทำงาน4. npm install --forceจากนั้นมันก็ใช้งานได้ในที่สุด
EGC

21

หากคุณต้องการที่จะหลีกเลี่ยง--forceตัวเลือก(ซึ่งมักจะเป็นวิธีการที่ดีกว่า) , ผมขอแนะนำให้แน่ใจว่าคุณได้หยุดทำงานโครงการเช่นนี้มักจะเป็นเหตุผลหลักสำหรับล็อคไฟล์ในเกือบ 90% ของกรณีที่ผมเคยเห็น

ฉันขอแนะนำขั้นตอนต่อไปนี้ตามลำดับนี้:

1- ในการหยุดเชิงมุมng sและในการหยุดปฏิกิริยา npm start มักจะแก้ปัญหานี้ได้เนื่องจากโดยปกติข้อผิดพลาดนี้จะเกิดขึ้นหากเซิร์ฟเวอร์การพัฒนากำลังเรียกใช้โครงการเนื่องจากล็อกไฟล์บางไฟล์และ npm ไม่สามารถอัปเดตได้จึงทำให้เกิดข้อผิดพลาดนี้

2- หากข้างต้นไม่ได้ผลให้ลองปิดตัวแก้ไขโค้ดที่เปิดพื้นที่ทำงานไว้ (อาจจะเป็นการล็อกไฟล์บางไฟล์หรือบางอย่าง)

ลองปิดตัวแก้ไขโค้ดและเรียกใช้:

npm install

3- หากยังไม่ได้ผลคุณอาจลองใช้--forceตัวเลือกนี้

npm install --force

2
นี่เป็นปัญหาของฉันฉันได้เปิดโฟลเดอร์ node_modules ผ่านเทอร์มินัลบน VS Code - ด้วยเหตุผลบางอย่างมันไม่ได้ลบ node_modules ออกจากระบบไฟล์ของฉันและล็อคไว้ ยังไม่ได้จนกว่าฉันจะปิดหน้าต่าง VS Code นั้นและเปิดขึ้นมาใหม่ว่ามันถูกลบออกไปแล้วและฉันสามารถเรียกใช้การติดตั้ง npm ได้อีกครั้ง
สตูเฟอร์ลอง

13

ฉันได้รับข้อผิดพลาดเดียวกันนั้นและอ้างอิงจากhttps://github.com/Medium/phantomjs/issues/19อาจเกิดจากซอฟต์แวร์ป้องกันไวรัสของคุณ ฉันปิดการใช้งานของฉันในช่วงเวลาของการติดตั้งและดำเนินการ "npm install" บน cmd ในฐานะผู้ดูแลระบบและใช้งานได้ หวังว่านี่จะช่วยได้


1
ต่อgithub.com/npm/npm/issues/12059สิ่งนี้ได้รับการแก้ไขแล้ว ไม่มีคำพูดใด ๆ ที่จะทำให้มันกลายเป็น ตามความคิดเห็นการปิดใช้งาน AV ไม่ได้ผลเสมอไป
user1821052

ในกรณีของฉันฉันต้องปิด SourceTree ระหว่างการติดตั้ง
Dejan

13

สำหรับฉันฉันเพิ่งปิดตัวแก้ไขโค้ด (VS Code) แล้วเรียกใช้คำสั่งเดียวกัน และนั่นช่วยแก้ปัญหาให้ฉันได้


9

ดังที่ Martin Kearn ชี้ให้เห็นในความคิดเห็นการปิด Visual Studio ช่วยแก้ปัญหาการอนุญาต npm ให้ฉัน เห็นได้ชัดว่า VS บางครั้งล็อคไฟล์ในnode_modules.


8

ฉันได้รับสิ่งเดียวกัน ฉันไม่พบสิ่งนี้จากที่ใด แต่พบว่า VM ของเรามักจะเปลี่ยนไฟล์เป็นสถานะอ่านอย่างเดียว ฉันจึงเปิดpackage.jsonคุณสมบัติไฟล์และยกเลิกการเลือกRead-onlyในแท็บ "ทั่วไป"

ขั้นตอน

  1. ไปที่package.jsonไฟล์
  2. คลิกขวาและเลือกProperties
  3. ในการทั่วไปแท็บคุณสมบัติส่วนยกเลิกการเลือกอ่านอย่างเดียว
  4. คลิกใช้เพื่อใช้การเปลี่ยนแปลง

อ่านเฉพาะสำหรับฉันแม้ว่าปัญหาเดิมคือฉันมักจะใช้รหัสเพื่อติดตั้ง ในกรณีนี้ฉันเปิดอินสแตนซ์ใหม่ของแอพใน Visual Studio เพื่อให้ฉันสามารถพอร์ตการเปลี่ยนแปลงบางอย่างจากเวอร์ชันเก่าและ VS ก็เริ่มติดตั้งทันที จากนั้นฉันก็เปิดรหัสเพื่อเรียกใช้การติดตั้ง npm ตามปกติและทั้งสองแอปก็เริ่มสับสน หลังจากล้มเหลวหลายครั้งฉันจึงทิ้งโมดูลโหนดจากเวอร์ชันรูทที่ใช้งานได้ของแอปของเราเพื่อให้ฉันสามารถสำรองพอร์ตการเปลี่ยนแปลงได้ โฟลเดอร์นี้เป็นแบบอ่านอย่างเดียวดังนั้นจึงดำเนินการบล็อกสิ่งต่างๆ
Matrim

8

นี่เป็นข้อผิดพลาดทั่วไปที่เกิดจาก Antivirus มีวิธีแก้ปัญหาสำหรับกรณีเช่นของฉันซึ่งฉันไม่สามารถปิดใช้งาน A / V (นโยบาย บริษัท )

คุณต้องเปลี่ยนแพ็คเกจpolyfills.jsภายในNpm:

[NODE_HOME]/node_modules/npm/node_modules/graceful_fs/polyfills.js

มองหาคำสั่งนี้:

if (process.platform === "win32") {

ภายในคำสั่งนี้มีการหมดเวลาทำการลองใหม่ในกรณีที่เกิดข้อผิดพลาด ปัญหาคือในบางกรณีหลังจากหมดเวลาไฟล์ยังคงถูกล็อกโดย A / V วิธีแก้ปัญหาคือตัดการหมดเวลาและปล่อยให้คำสั่งนี้วนซ้ำ การเปลี่ยนแปลงด้วยรหัสก่อนหน้านี้แสดงความคิดเห็น:

if (platform === "win32") {

fs.rename = (function (fs$rename) { return function (from, to, cb) {
  var start = Date.now()
  var backoff = 0;
  fs$rename(from, to, function CB (er) {
    if (er
        && (er.code === "EACCES" || er.code === "EPERM")
        /*&& Date.now() - start < 60000*/) {
            console.log("Retrying rename file: " + from + " <> " + to)
            fs$rename(from, to, CB);
      /*setTimeout(function() {
        fs.stat(to, function (stater, st) {
          if (stater && stater.code === "ENOENT")
            fs$rename(from, to, CB);
          else
            cb(er)
        })
      }, backoff)*/
      if (backoff < 100)
        backoff += 10;
      return;
    }
    if (cb) cb(er)
  })
}})(fs.rename)
}

คุณชายคือ MVP ตัวจริง
Atanas Korchev

4

ในกรณีของฉันมีบางอย่างถูกล็อคและการรีบูตอย่างรวดเร็วแก้ไขได้


4

ฉันมีปัญหานี้หลายครั้งเฉพาะใน Windows ฉันลองสิ่งเหล่านี้ตามปกติ

  1. npm install --force
  2. ตรวจสอบว่า node_modules ถูกตั้งค่าเป็นแบบอ่านอย่างเดียวหรือไม่และลบออกหากเป็น
  3. ลบ node_modules/
  4. ตรวจสอบว่ามีการเปิดตัวแก้ไขที่สามารถเข้าถึงโฟลเดอร์รากของโครงการได้หรือไม่
  5. รีบูต :(

โดยปกติแล้วการลองnpm installทำตามขั้นตอนใดขั้นตอนหนึ่งจะช่วยแก้ปัญหาได้



2

ฉันติดตั้งดิสก์หน้าต่างของฉันใหม่ด้วยการตั้งค่าสถานะข้อมูลเมตาและช่วยได้ทันที: https://devblogs.microsoft.com/commandline/chmod-chown-wsl-improvements/

หลังจากนั้นไม่จำเป็นต้องใช้คำสั่ง sudo สำหรับ npm อีกต่อไปเนื่องจากข้อมูลเมตาจะเก็บสิทธิ์ของ windows และไฟล์ linux / directory ไว้ในการตรวจสอบ


2

ฉันมีปัญหาเดียวกันหลังจากอัปเดตเป็น npm ถึง 5.4.2 npm เริ่มให้ข้อผิดพลาดเดียวกันสำหรับคำสั่ง npm ส่วนใหญ่ วิธีแก้ปัญหาบางอย่างแนะนำให้รันด้วย--no-optionalแต่ก็ไม่ได้ผลเสมอไป

คนอื่น ๆ แนะนำให้ดาวน์เกรด แต่ฉันไม่ต้องการดาวน์เกรด

ฉันสงสัยว่ามีปัญหากับการติดตั้งไม่แน่ใจว่ามันคืออะไร

ดังนั้นฉันจึงอัปเดต npm ของฉันใหม่:

npm i -g npm

และทำงานได้ดีตั้งแต่นั้นมา


1

npm ล้มเหลวสำหรับฉันscandirสำหรับ:

npm install -g webpack

... ซึ่งอาจเกิดจาก npm พยายาม "แก้ไข" ไฟล์ที่อาจถูกล็อกโดยกระบวนการอื่น ๆ ตามที่กล่าวไว้ที่นี่และในเธรด github อื่น ๆ หลังจากบังคับให้ล้างแคชตรวจสอบแคชทำงานในฐานะผู้ดูแลระบบปิดใช้งาน AV ฯลฯ วิธีแก้ปัญหาที่ใช้งานได้จริงสำหรับฉันคือการปิดสิ่งใด ๆ ที่อาจทำให้ล็อกไฟล์ (เช่นรีสตาร์ทคอมพิวเตอร์)

ฉันหวังว่านี่จะช่วยใครบางคนที่กำลังดิ้นรน


1

ผมมีปัญหาเหมือนกัน. สาเหตุของข้อผิดพลาดคืออักขระที่ไม่รองรับในเส้นทางไปยังไฟล์ แทนที่ซิริลลิกเป็นภาษาอังกฤษ - ช่วยได้


1

สำหรับบางคนโฟลเดอร์ AppRoot \ npm อาจเป็นปัญหา บางครั้งโฟลเดอร์ AppRoot จะถูกทำเครื่องหมายเป็นเครือข่ายที่ใช้ร่วมกันดังนั้น Antivirus จะบล็อกสิ่งต่างๆ ตามลิงค์ด้านล่างเพื่อดูวิธีแก้ปัญหาที่สมบูรณ์

https://alastaircrabtree.com/fixing-intermittant-eperm-operation-not-permitted-on-npm-install/

ฉันหวังว่านี่จะช่วยได้.


1

ฉันทำสิ่งต่อไปนี้:

  1. อัปเกรด npm เป็นเวอร์ชันล่าสุด: npm install -g npm@6.5.0-next.0
  2. ลบโฟลเดอร์ npm-cache จาก: c:/users/[username]/AppData/Roaming/npm-cache
  3. แคชทำความสะอาด: npm cache clean --force
  4. เรียกใช้npm install.

1

เปิดพรอมต์คำสั่งในฐานะผู้ดูแลระบบและไปที่ตำแหน่งโปรเจ็กต์จากนั้นเรียกใช้การติดตั้ง npm มันได้ผลสำหรับฉัน


1

ในกรณีของฉันทำงานnpm: v6.9.0&& node: v10.16.1บนWindowsผมต้องวิ่ง CLI ของฉัน (ทุบตีคอมไพล์) ในฐานะผู้ดูแล จากนั้นติดตั้งแพ็คเกจโดยไม่มีคำเตือน / ข้อผิดพลาดใด ๆ


0

คำตอบของฉันคือทำnpm cache clean --forceก่อน จากนั้นรันnpm install -g npm@5.3.0เพื่อติดตั้งเวอร์ชัน npm 5.3.0 สำหรับฉันเวอร์ชัน npm นี้ใช้งานได้โดยไม่มีปัญหา


0

เพียงแค่ลบโฟลเดอร์แพ็คเกจออกจากเส้นทางของแพ็คเกจส่วนกลาง npm จากนั้นติดตั้งแพคเกจใหม่ โปรดทราบว่าแพ็กเกจได้รับการติดตั้งทั่วโลกใน: C: \ Users \ your-name \ AppData \ Roaming \ npm \ node_modules


0

ฉันมีปัญหาเดียวกันใน windows 10 เพียงทำตามขั้นตอนเหล่านี้:

  • เปิด cmd ในฐานะผู้ดูแลระบบ

  • ติดตั้งแพ็คเกจ npm ที่อัปเดตแล้ว

  • npm i -g npm

  • npm init - ใช่


0

การเรียกใช้คำสั่งในฐานะผู้ดูแลระบบขั้นสูงได้ผลสำหรับฉัน ลองใหม่หลังจากปิด Editor ที่คุณใช้งานอยู่


0

ฉันจัดโครงสร้างด้วยสิ่งนี้ด้วย ฉันจบวิธีแก้ปัญหาที่ใช้งานได้ดีถ้าคุณใช้ nvm:

cd ~/.nvm/versions/node/{your node version}/lib/ npm install npm

และนั่นแหล่ะ


0

อาจเป็นเพราะซอฟต์แวร์ป้องกันไวรัสของคุณ หากคุณไม่สามารถปิดใช้งาน AV ได้คุณสามารถลองแก้ไขตำแหน่งการติดตั้งส่วนกลาง NPM ของคุณเมื่อโหนดติดตั้งลงในไดเรกทอรี APPDATA ซึ่ง AV Engines ตรวจสอบอยู่ ลองรันคำสั่งต่อไปนี้ -

npm config set prefix "YOUR CUSTOM LOCATION" npm config set cache "YOUR CUSTOM LOCATION"

ลบไดเร็กทอรี node_modules และติดตั้งแพ็กเกจของคุณอีกครั้ง


0

ในกรณีของฉันการตั้งค่าtypescript.disableAutomaticTypeAcquisitionใน Visual Studio Code trueดูเหมือนจะช่วยได้



0

ฉันปิด VS ลบโฟลเดอร์ node_modules

จากนั้นวิ่ง:

npm i -D -E clean-webpack-plugin@3.0.0 css- 
loader@3.4.2 html-webpack-plugin@3.2.0 mini-css- 
extract-plugin@0.9.0 ts-loader@6.2.1 typescript@3.7.5 
webpack@4.41.5 webpack-cli@3.3.10 

จากนั้นต้องเปลี่ยนคุณสมบัติเพื่อไม่ให้อ่านเฉพาะในโฟลเดอร์ node_modules เมื่อรันเสร็จแล้ว

จากนั้นวิ่ง:

npm i @microsoft/signalr @types/node

จากนั้นเปิดสำรองโปรเจ็กต์ใน VS และ package.json ดูถูกต้องด้วยการอ้างอิง

ตามบรรทัดเดียวกับที่คนอื่นพูดถึงอ่านเฉพาะในโฟลเดอร์ node_modules และปิด VS เพื่อเรียกใช้การติดตั้ง npm


0

หากคุณมีปัญหาเกี่ยวกับ PHP Storm:

  1. ปิดแท็บเทอร์มินัล
  2. เปิดแท็บเทอร์มินัลใหม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.