Để mở rộng câu trả lời của @Steve Roberts.
Tên người dùng của tôi có dạng "domain \ username" - bao gồm dấu gạch chéo trong cấu hình proxy dẫn đến dấu gạch chéo phía trước xuất hiện. Vì vậy, nhập vào đây:
npm config set proxy "http://domain\username:password@servername:port/"
Tôi cũng phải mã hóa URL domain\user
chuỗi của mình , tuy nhiên, tôi có một khoảng trắng trong tên người dùng của mình nên tôi đặt +
mã hóa URL không gian, nhưng nó sẽ được mã hóa gấp đôi dưới dạng %2B
(đó là mã hóa URL cho dấu cộng, tuy nhiên URL mã hóa cho một không gian là %20
), vì vậy tôi phải thay vào đó làm như sau:
lệnh npm
// option one
// it works for some packages
npm config set http_proxy "http://DOMAIN%5Cuser+name:password@x.x.x.x:port"
npm config set proxy "http://DOMAIN%5Cuser+name:password@x.x.x.x:port"
// option two
// it works best for me
// please notice that I actually used a space
// instead of URL encode it with '+', '%20 ' OR %2B (plus url encoded)
npm config set http_proxy "http://DOMAIN%5Cuser name:password@x.x.x.x:port"
npm config set proxy "http://DOMAIN%5Cuser name:password@x.x.x.x:port"
// option two (B) as of 2019-06-01
// no DOMAIN
// instead of URL encode it with '+', '%20 ' OR %2B (plus url encoded)
npm config set http_proxy "http://user name:password@x.x.x.x:port"
npm config set proxy "http://user name:password@x.x.x.x:port"
xử lý sự cố cấu hình npm
Tôi đã sử dụng npm config list
để có được các giá trị được phân tích cú pháp mà tôi đã đặt ở trên và đó là cách tôi tìm ra về mã hóa kép. Kỳ dị.
Về cơ bản, bạn phải tìm ra các yêu cầu sau:
- Là một
DOMAIN
chuỗi cần thiết để xác thực
- Bạn có cần mã hóa các ký tự đặc biệt?
- Dấu cách và dấu (@) là những thách thức đặc biệt
Trân trọng.
VARIABLES MÔI TRƯỜNG WINDOWS (Prompt)
Cập nhật
Hóa ra ngay cả với các cấu hình trên, tôi vẫn gặp một số vấn đề với một số gói / tập lệnh sử dụng Trình khách HTTP - Đơn giản hóa nội bộ để tải xuống nội dung. Vì vậy, như đã đọc ở trên, chúng ta có thể chỉ định các biến môi trường để đặt proxy trên dòng lệnh và Yêu cầu sẽ tôn trọng các giá trị đó.
Sau đó, sau (và tôi miễn cưỡng thừa nhận điều này) một vài lần thử (giống như ngày), khi cố gắng đặt các biến môi trường cuối cùng tôi đã thành công với các nguyên tắc sau:
rem notice that the value after the = has no quotations
rem - I believe that if quotations are placed after it, they become
rem part of the value, you do not want that
rem notice that there is no space before or after the = sign
rem - if you leave a space before it, you will be declaring a variable
rem name that includes such space, you do not want to do that
rem - if you leave a space after it, you will be including the space
rem as part of the value, you do not want that either
rem looks like there is no need to URL encode stuff in there
SET HTTP_PROXY=http://DOMAIN\user name:password@x.x.x.x:port
SET HTTPS_PROXY=http://DOMAIN\user name:password@x.x.x.x:port
cntlm
Tôi đã sử dụng kỹ thuật trên trong một vài tuần, cho đến khi tôi nhận ra chi phí cập nhật mật khẩu của mình trên tất cả các công cụ cần thiết lập proxy.
Ngoài npm, tôi cũng sử dụng:
- bower
- mơ hồ
- hộp ảo (chạy linux)
- apt-get [linux]
- git
- vscode
- dấu ngoặc
- nguyên tử
- tsd
Các bước thiết lập cntlm
Vì vậy, tôi đã cài đặt cntlm . Cài đặt cntlm
khá ổn về phía trước, bạn tìm tệp ini @C:\Program Files\Cntlm\cntlm.ini
- Mở
C:\Program Files\Cntlm\cntlm.ini
(bạn có thể cần quyền quản trị)
- tìm kiếm
Username
và Domain
dòng (dòng 8-9 tôi nghĩ)
- thêm tên người dùng của bạn
- thêm tên miền của bạn
Trên cmd nhanh chóng chạy:
cd C:\Program Files\Cntlm\
cntlm -M
cntlm -H
- bạn sẽ được yêu cầu nhập mật khẩu:
cygwin warning:
MS-DOS style path detected: C:\Program Files\Cntlm\cntlm.ini
Preferred POSIX equivalent is: /Cntlm/cntlm.ini
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
Password:
Đầu ra bạn nhận được cntlm -H
sẽ trông giống như:
PassLM 561DF6AF15D5A5ADG
PassNT A1D651A5F15DFA5AD
PassNTLMv2 A1D65F1A65D1ASD51 # Only for user 'user name', domain 'DOMAIN'
- Chúng tôi khuyên bạn nên sử dụng PassNTLMv2 để thêm
#
dòng trước PassLM
và PassNT
không sử dụng chúng
- Dán đầu ra từ
cntlm -H
tệp ini thay thế các dòng cho PassLM
, PassNT
và PassNTMLv2
, hoặc nhận xét các dòng gốc và thêm dòng của bạn.
- Thêm
Proxy
máy chủ của bạn . Nếu bạn không biết máy chủ proxy là gì ... Hãy làm những gì tôi đã làm, tôi đã tìm tệp tự động cấu hình proxy của mình bằng cách tìm AutoConfigURL
khóa Đăng ký HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
. Điều hướng đến url đó và xem qua mã xảy ra là JavaScript.
- Tùy chọn bạn có thể thay đổi cổng nơi cntlm lắng nghe bằng cách thay đổi
Listen ####
dòng, ####
số cổng ở đâu.
Cài đặt NPM với cntlm
Vì vậy, bạn trỏ npm đến proxy cntml của bạn, bạn có thể sử dụng ip, tôi đã sử dụng localhost
và cổng mặc định cho cntlm 3128
để url proxy của tôi trông như thế này
http://localhost:3128
Với lệnh thích hợp:
Cấu hình npm đặt proxy http: // localhost: 3128
Là đơn giản hơn rất nhiều. Bạn thiết lập tất cả các công cụ của mình với cùng một url và bạn chỉ cập nhật mật khẩu ở một nơi. Cuộc sống đơn giản hơn nhiều không.
Phải thiết lập chứng chỉ CA npm
Từ tài liệu npm ca
Nếu proxy công ty của bạn đang chặn các kết nối https bằng Chứng chỉ tự ký, thì đây là điều cần tránh npm config set strict-ssl false
(lớn không-không).
Các bước cơ bản
- Nhận chứng chỉ từ trình duyệt của bạn (Chromes hoạt động tốt). Xuất nó dưới dạng X.509 được mã hóa Base-64 (.CER)
- Thay thế dòng mới bằng
\n
- Chỉnh sửa
.npmrc
thêm một dòng của bạnca[]="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
Các vấn đề
Tôi đã nhận thấy đôi khi npm loại treo, vì vậy tôi dừng lại (đôi khi mạnh mẽ) cntlm và khởi động lại nó.