การตรวจสอบการอัปเดต npm ล้มเหลว


14

จริง ๆ แล้วฉันพยายามติดตั้ง nodejs พร้อมกับ npm บน ubuntu 17.04 ของฉัน ฉันดาวน์โหลดเวอร์ชัน linux จาก nodejs.org และสร้างซอฟต์ลิงค์สำหรับโหนดและ nodejs เมื่อตรวจสอบเวอร์ชันของ nodejs จะแสดงเวอร์ชันที่ฉันติดตั้งและฉันก็ใช้ได้

ตอนนี้ฉันพยายามทำเหมือนกันสำหรับ npm ฉันพยายามสร้างซอฟต์ลิงค์สำหรับ npm

 sudo ln -sf /mnt/7A46BE1454633621/softwares/programming/frontend/nodejs/lib/node_modules/npm/bin/npm 
    /usr/bin/npm

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

5.0.3
npm update check failed                 │
│           Try running with sudo or get access           │
│          to the local update config store via           │
│ sudo chown -R $USER:$(id -gn $USER) /home/sagar/.config 

คุณทราบsudo chown -R $USER:$(id -gn $USER) /home/sagar/.configหรือไม่?
George Udosen

หากคุณใช้ Docker ให้ตรวจสอบอีกครั้งว่าระบบไฟล์เป็นแบบอ่านอย่างเดียว มันจะต้องเขียนได้
КонстантинВан

คำตอบ:


14

เวอร์ชัน npm ของฉันคือ 5.0.3 และฉันมีปัญหาเดียวกันเมื่อฉันใช้คำสั่ง npm:

ข้อความแสดงข้อผิดพลาด npm

คำสั่งทำงานได้ดี แต่รหัสนี้ยังคงปรากฏขึ้นโดยไม่มีเหตุผลที่ชัดเจน ฉันได้อัปเดตจาก 5.0.3 เป็น 5.2.0 ด้วยคำสั่งเหล่านี้:

sudo chown -R $USER:$(id -gn $USER) /home/sagar/.config

npm install -g npmnpm i -g npmหรือ

ตอนนี้ npm ทำงานได้ดี


ทำงานให้ฉัน ถึงแม้ว่าผมจะอัปเดตเป็นรากด้วยnpm sudo npm i -g npmอัปเดต npm เป็น 6.0.1
Denialos

3

ปัญหาเดียวกันสำหรับฉันแน่นอน แต่ดูเหมือนจะไม่เกี่ยวข้องกับรุ่น (ฉันใช้ npm 5.5.1) แก้ไขสิทธิ์ในการ~/.configทำเคล็ดลับสำหรับฉัน:

sudo chown -R $USER:$(id -gn $USER) ~/.config

~/.config/configstore/update-notifier-npm.jsonผมคิดว่านี่เป็นปัญหาที่เกี่ยวข้องกับบางคนที่มีเจ้าของ


1

ฉันเปลี่ยนเจ้าของ

~/configstore

และ

~/configstore/update-notifier-npm.json

ถึง $ USER: $ USER

ฉันเดาว่าทำงานnpmกับ sudo สร้างไฟล์นั้น อย่างน้อยในระบบของฉันเราพบสิ่งนี้:

$ env | grep  -e HOME= -e "^USER="
USER=craig
HOME=/home/craig

$ sudo env | grep  -e HOME= -e "^USER="
HOME=/home/craig
USER=root

ดังนั้นหากsudo npmมีการเข้ารหัสเพื่อสร้าง~/configstore/update-notifier-npm.jsonมันจะทำมันเป็นไดเรกทอรีบ้านของผู้ใช้สามัญ ที่สร้างปัญหาเมื่อทำงานในภายหลังnpmโดยsudoที่ยังต้องการอ่านและอาจเขียน~/configstore/update-notifier-npm.jsonซึ่งยังต้องการที่จะอ่านและอาจจะเขียนด้วยเหตุผลบางอย่างสิทธิ์คือ 600 ทั้งคู่

ระมัดระวังเมื่อchownและchmodไอเอ็นจีทุกอย่างภายใต้~/.configอาจจะมีบางสิ่งบางอย่างที่มีความสำคัญมี


1

กรุณาอย่าใช้chownคำสั่งที่ให้ไว้ในข้อความแสดงข้อผิดพลาด พา ธ~/.configถูกใช้โดยแอพพลิเคชั่นมากมายและเป็นพา ธ มาตรฐานสำหรับการจัดเก็บข้อมูลการกำหนดค่า ไม่แนะนำให้เปลี่ยนสิทธิ์ของกลุ่มที่นั่น ดีกว่าเพียงเปลี่ยนเส้นทางที่ต้องการเช่น:

sudo chown -R $USER ~/.config/configstore

กรณีพิเศษ: นักเทียบท่า

กรณีทั่วไปในการรับข้อผิดพลาดนี้คือการใช้บางสิ่งเช่น Docker (โดยเฉพาะเมื่อติดตั้งที่บ้านของคุณเอง) พิจารณาการตั้งค่าตัวแปรสภาพแวดล้อมเช่นและNPM_CONFIG_CACHE XDG_CONFIG_HOMEอันแรกตั้งค่าแคชเส้นทางของคุณและอันสุดท้ายคือการตั้งค่าเส้นทาง configstore ของคุณ ฉันจะไม่ใช้.configโฟลเดอร์ในไดเรกทอรีบ้านเพื่อหลีกเลี่ยงปัญหาเกี่ยวกับความเป็นเจ้าของไฟล์ แต่การใช้แคชช่วยบริการต่างๆเช่น NPM เพื่อบันทึกแบนด์วิดท์ พยายามหลีกเลี่ยงการดาวน์โหลดมากเกินไปในทุกบิลด์และใช้สิ่งนี้ (แต่ตรวจสอบว่าเป้าหมายเช่น/tmpนั้นมีพื้นที่ดิสก์เพียงพอ):

test -d /tmp/$USER/cache || mkdir -p /tmp/$USER/cache
docker run \
  -v /tmp/$USER:/tmp/$USER \
  -e "NPM_CONFIG_CACHE=/tmp/$USER/cache/npm" \
  -e "XDG_CONFIG_HOME=/tmp/$USER/cache/" \
  ...

0

อย่างแรกที่เราสามารถแก้ไขปัญหานี้ได้คือ

  1. ตรวจสอบให้แน่ใจว่าคุณได้เลือกตัวเลือกในการตั้งค่าโฟลเดอร์เพื่อดูไฟล์ที่ซ่อน
  2. คลิกขวาที่ไฟล์. config และเลือกคุณสมบัติจากนั้นคลิกที่แท็บการอนุญาต
  3. ในสิทธิ์ของโฟลเดอร์และการอนุญาตสำหรับกลุ่ม | เจ้าของ | ตัวเลือกอื่น ๆ ทำเครื่องหมายเลือกอ่านเขียนและดำเนินการ
  4. ที่ด้านล่างคลิกที่ใช้สิทธิ์กับไฟล์ที่แนบมา
  5. ตอนนี้ให้ลองเรียกใช้คำสั่ง npm เดียวกันกับที่คุณเห็นข้อความเหล่านั้นอีกครั้ง

หากสิ่งนี้ช่วยให้คุณรู้ว่าต้องทำอะไร

หมายเหตุ: กระบวนการเดียวกันสามารถใช้กับ configstore เพียงอย่างเดียวภายในโฟลเดอร์. config

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