2017-07-15 16 views
7

Nhóm của chúng tôi vừa cập nhật thành npm @ 5. package-lock.json được thống nhất giữa Windows và Mac (một số phụ thuộc nhất định là tùy chọn để chúng không được cài đặt trên Windows, nhưng chúng thực hiện trên Mac) sao cho không có vấn đề gì với máy, chúng ta sẽ tạo cấu trúc node_modules giống nhau. Đó diễn ra tốt đẹp, sau đó mỗi người trong số các thành viên trong nhóm đã trải qua các bước sau:"Yêu cầu: đúng" là gì trong package-lock.json

  1. rm -rf node_modules
  2. git pull
  3. npm install

Điều này thực sự đã đi một cách hoàn hảo cho tất cả các thành viên trong nhóm ngoại trừ một người đã sửa đổi package-lock.json sau npm install. Một dòng được sửa đổi là nó đã xóa "requires": true.

Vì vậy, tôi thấy:

{ 
    ... 
    "version": "0.0.1", 
    "lockfileVersion": 1, 
    "requires": true, 
    "dependencies": { 
    ... 
} 

Nhưng anh nhìn thấy:

{ 
    ... 
    "version": "0.0.1", 
    "lockfileVersion": 1, 
    "dependencies": { 
    ... 
} 

Có ai biết tại sao requires: true có thể được gỡ bỏ từ package-lock.json tập tin trên một số máy nhưng không phải những người khác? Ngoài ra, một chút giải thích về những gì tài sản này sẽ không làm tổn thương. :)

Cảm ơn trước!

+0

Tôi gặp vấn đề tương tự. Tôi đang sử dụng 'nút 8.1.2' và' npm 5.0.4'. Nhìn vào tài liệu của họ, không có đề cập đến bất kỳ 'yêu cầu'. Tôi cũng tò mò về những gì đang làm.Lưu ý rằng, loại bỏ nó dường như không thực sự phá vỡ bất cứ điều gì (hoạt động trên máy chủ CI và dàn dựng của chúng tôi) – lkartono

+0

Cập nhật: có vẻ như nó liên quan đến phiên bản npm. Chỉ cần cập nhật thành 'npm 5.1.0' và' require: true' biến mất. Tuy nhiên, tất cả các phụ thuộc của tôi đều có khóa 'require' ngay bây giờ. Tôi nghĩ rằng 'yêu cầu: true' lực' package-lock.json' để liệt kê một cách lồng nhau, phụ thuộc 'phụ thuộc. – lkartono

+0

Xem https://github.com/npm/npm/pull/19307 cho một PR di chuyển giải thích từ tệp spec vào trang trợ giúp –

Trả lời

3

Như tôi đã nghi ngờ trong nhận xét của mình, trường requires đã được thêm từ 5.1.0. Bạn có thể xem yêu cầu kéo liên quan ở đây https://github.com/npm/npm/pull/17508 (changelog có thể nhìn thấy ở đây https://github.com/npm/npm/releases/tag/v5.1.0)

Để trích dẫn những gì nó nói:

này có một số ít các bản vá:

  1. Nó giới thiệu một package- mới trường lock.json, được gọi là yêu cầu, trong đó theo dõi mô-đun nào mà một mô-đun nhất định yêu cầu.
  2. .....

Để tránh những loại mâu thuẫn, tôi khuyên bạn (và bản thân mình cũng) để đảm bảo tất cả các đồng đội của mình đang sử dụng cùng một phiên bản npm.

CẬP NHẬT

Sau khi nâng cấp lên phiên bản npm5.1.0, tôi đã gặp rắc rối với thiếu phụ thuộc (làm việc trên một ứng dụng 4 góc). Nếu bất kỳ ai đang gặp phải vấn đề tương tự, dưới đây là những gì tôi đã làm để giải quyết:

rm -rf node_modules 
npm prune 
npm install 

Hy vọng điều đó sẽ hữu ích.

+1

Chấp nhận làm câu trả lời, bởi vì tất cả chúng ta đều cần phải có cùng phiên bản NPM . Chúng tôi cũng thấy rằng có tất cả các phụ thuộc được liệt kê là devDependencies là có vấn đề bởi vì NPM có một vấn đề giải quyết các phụ thuộc của devDependencies. Cuối cùng, các mô-đun tùy chọn sẽ được cài đặt trên một số máy nhưng không cài đặt các máy khác. Khi chúng tôi có cùng phiên bản NPM và đã sửa các phụ thuộc, chúng tôi hiện thực hiện theo các bước sau để cập nhật mô-đun: 'rm -rf node_modules && npm install --no-optional' – atdrago

Các vấn đề liên quan