npm WARN package.json: ไม่มีฟิลด์ที่เก็บ


809

ฉันติดตั้ง Express.js ด้วยคำสั่งต่อไปนี้:

sudo npm install -g express

ฉันได้รับคำเตือนดังต่อไปนี้:

npm WARN package.json range-parser@0.0.4 No repository field.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json methods@0.0.1 No readme data.
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json pause@0.0.1 No repository field.
npm WARN package.json bytes@0.2.0 No repository field.
npm WARN package.json github-url-from-git@1.1.1 No repository field.
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.

ฉันใหม่สำหรับ Node.js และ Express.js เหตุใดฉันจึงมีคำเตือนข้างต้น ฉันควรจะกังวลไหม


19
เมื่อเห็นคำถามนี้หนึ่งปีต่อมาฉันรู้ว่าฉันลบคำเตือนเหล่านี้ทุกครั้งที่ฉันติดตั้งแพคเกจ npm นี่คือสิ่งที่นักพัฒนาแพ็คเกจควรระวังให้มากขึ้น
nha

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

29
สำหรับ repos ส่วนตัวเพียงเพิ่ม"private": truepackage.json
chovy

คำตอบ:


1279

มันเป็นเพียงการตรวจสอบ ณ NPM v1.2.20 พวกเขารายงานว่านี่เป็นคำเตือน

แต่ไม่ต้องกังวลมีsoooooooแพคเกจจำนวนมากที่ยังไม่ได้มีข้อมูลในของพวกเขาrepository package.jsonฟิลด์นี้ใช้เพื่อจุดประสงค์ในการให้ข้อมูล

ในกรณีที่คุณเป็นผู้เขียนแพ็คเกจให้ใส่repositoryในของคุณpackage.jsonเช่นนี้:

"repository": {
  "type": "git",
  "url": "git://github.com/username/repository.git"
}

อ่านเพิ่มเติมเกี่ยวกับrepositoryฟิลด์และดูข้อผิดพลาดที่บันทึกไว้สำหรับรายละเอียดเพิ่มเติม


นอกจากนี้ ตามที่รายงานโดยเดิมที @dan_nlคุณสามารถตั้งค่าที่สำคัญในของคุณprivate สิ่งนี้จะไม่เพียง แต่หยุดคุณไม่ให้ทำงานในแอพของคุณโดยไม่ตั้งใจแต่จะหยุด NPM จากการพิมพ์คำเตือนเกี่ยวกับปัญหาpackage.json
npm publishpackage.json

{
  "name": "my-super-amazing-app",
  "version": "1.0.0",
  "private": true
}

20
ไม่กี่เดือนหลังจากคำตอบของฉันและฉันไม่ได้ดูเหมือนปัญหาใด ๆ เพื่อให้ห่างไกล :)
gustavohenke

2
NPM 2.14 จะพิมพ์ข้อผิดพลาดเมื่อrepositoryว่างเปล่าและprivateตั้งค่าเป็นจริง
Blaise

9
@Blaise ฉันไม่ได้รับคำเตือนใด ๆ ใน NPM 3.3.3 โดยใช้private: true
gustavohenke

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

1
ขอบคุณสำหรับความเป็นส่วนตัว: จริงแล้วฉันก็คิดถึงเรื่องนี้ตลอดหลายปีที่ผ่านมา
Jeremy Chone

394

คุณยังสามารถทำเครื่องหมายแอปพลิเคชันเป็นส่วนตัวหากคุณไม่ได้วางแผนที่จะวางไว้ในที่เก็บจริง

{
  "name": "my-application",
  "version": "0.0.1",
  "private": true
}

51

ตามที่ dan_nl ระบุไว้คุณสามารถเพิ่มที่เก็บปลอมส่วนตัวใน package.json คุณไม่จำเป็นต้องใช้ชื่อและรุ่นของมันด้วย:

{
  ...,
  "repository": {
    "private": true
  }
}

อัปเดต: คุณสมบัตินี้ไม่มีเอกสารและอาจไม่ทำงาน เลือกตัวเลือกต่อไปนี้

ยังดีกว่า: ตั้งค่าprivateสถานะโดยตรง วิธีนี้ npm ไม่ขอไฟล์ README ด้วย:

{
  "name": ...,
  "description": ...,
  "version": ...,
  "private": true
}

ได้รับแจ้งเกี่ยวกับผู้ใช้คนอื่นเกี่ยวกับคำตอบนี้ ดูเหมือนว่าrepository.privateจะไม่ได้รับการบันทึกพฤติกรรม (หรือว่ามันจะไม่ได้รับการยอมรับ) ตามdocs.npmjs.com/files/package.json
gustavohenke

1
@ gustavohenke: ขอบคุณดูเหมือนว่าคุณพูดถูกprivateเพราะอสังหาริมทรัพย์ระดับบนเป็นตัวเลือกที่ดีกว่าอยู่ดี อัปเดตคำตอบของฉัน
wortwart

46

หากคุณได้รับสิ่งนี้จากตัวคุณเองpackage.jsonเพียงเพิ่มrepositoryฟิลด์ลงไป (ใช้ลิงก์ไปยังที่เก็บจริงของคุณ):

"repository" : { 
   "type" : "git",
   "url" : "https://github.com/npm/npm.git"
 }

ขอขอบคุณที่ชี้แจงให้ใช้ลิงก์ไฟล์โครงการ github แบบเต็ม (รวมhttp://หรือhttps://!
twknab


9

ในคำง่าย package.json ของโครงการของคุณไม่มีคุณสมบัติของที่เก็บคุณต้องเพิ่ม

และคุณต้องเพิ่มที่เก็บใน package.json ของคุณเช่นด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

และให้ฉันอธิบายตามสถานการณ์ของคุณ

คุณต้องเพิ่มฟิลด์ที่เก็บข้อมูลบางอย่างเช่นด้านล่าง

  "repository" : {     
     "type" : "git",
      "url" : "http://github.com/npm/express.git" 
   }

7

หากต้องการหลีกเลี่ยงคำเตือนเช่น:

npm WARN project.com@1.0.0 No repository field.

คุณต้องกำหนดที่เก็บในโครงการของคุณ package.json ในกรณีที่คุณกำลังพัฒนาโดยไม่มีการเผยแพร่ไปยังที่เก็บคุณสามารถตั้งค่า"private": trueใน package.json

ตัวอย่าง:

{
  "name": "test.loc",
  "version": "1.0.0",
  "private": true,
  ...
  "license": "ISC"
}

เอกสาร NPM เกี่ยวกับสิ่งนี้: https://docs.npmjs.com/files/package.json


6

หากคุณไม่ต้องการระบุที่เก็บคุณสามารถเพิ่มบรรทัดต่อไปนี้ในpackage.jsonไฟล์:

"description":"",
"version":"0.0.1",
"private":true,

ที่ทำงานให้ฉัน
เมื่อเพิ่มprivateคุณไม่จำเป็นต้องเชื่อมโยงไปยัง repo


4

นี่จะช่วยให้คุณทุกคนในการค้นหารายละเอียดที่ถูกต้องของคุณเองใช้

npm ls dist-tag

นี่จะแสดงข้อมูลที่ถูกต้องดังนั้นคุณไม่ต้องเดาตำแหน่งไฟล์ ฯลฯ

สนุก :)


1
ฉันได้รับคำตอบว่า '--empty
MJ

3

ใช่คุณอาจจะสามารถสร้าง / สร้างใหม่ได้โดยรวม-fที่ส่วนท้ายของคำสั่งของคุณ


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