<p>benang tidak menghormati pengaturan otentikasi di .npmrc</p>

Dibuat pada 14 Sep 2017  ·  86Komentar  ·  Sumber: yarnpkg/yarn

Apakah Anda ingin meminta fitur atau melaporkan bug ?
BUG
Bagaimana perilaku saat ini?
Benang tidak menghormati .npmrc
Jika perilaku saat ini adalah bug, berikan langkah-langkah untuk mereproduksi.
Kami memerlukan otentikasi untuk salah satu repositori kami dan kami biasa melakukan ini dengan menentukan otentikasi di .npmrc. Ini berhasil hingga 0,28,4 tetapi rusak pada 1.0.0

Apa perilaku yang diharapkan?
Menghormati pengaturan otentikasi di .npmrc

Sebutkan node.js, benang, dan versi sistem operasi Anda.
Itu terjadi setelah memutakhirkan benang ke 1.0.0 / 1.0.1 (telah mencoba kedua versi). Terlepas dari OS dan versi nodejs.

cat-bug help wanted

Komentar yang paling membantu

ini telah dilaporkan pada tahun 2017, sekarang tahun 2019 dan masalah ini masih ada.

Semua 86 komentar

Ini harus diperbaiki di 1.0.2 yang dirilis kemarin. Bisakah Anda mencobanya?

@BYK Saya mengalami masalah yang sama seperti di atas dan yang disebutkan di akhir # 4157. Saya mencoba menjalankan 1.0.2 dan gagal dengan 404 . Menjalankan 0.27.5 berfungsi seperti yang diharapkan.

Bisakah Anda menempelkan file npmrc Anda di sini sehingga kami dapat mencoba mereproduksi (jelas mengedit rahasia atau info pribadi lainnya)

@KidkArolis ketika mencoba untuk mendapatkan direktori kerja saya sebersih mungkin, entah bagaimana memperbaiki masalah tersebut? 🙃

Langkah-langkah yang saya ambil:

  • Hapus yarn.lock dan file yarn-error.log
  • Hapus node_modules/
  • brew link yarn dan yarn --version untuk memastikan saya berada di 1.0.2
  • yarn

Sepertinya itu berhasil. Saya akan menganggap ini sebagai kesalahan pengguna pada saya dan tim saya.

@beardedtim Bagaimana jika Anda sekarang menghabiskan node_modules tetapi menyimpan yarn.lock dan kemudian menjalankan yarn install ? Apakah semuanya berhasil? Ini sebagian yang dilacak # 4157 tetapi mungkin terkait dengan masalah yang lebih besar yang sedang dihadapi?

Saya mengalami masalah ini (404 di repo terbatas pribadi, registri mana pun yang saya gunakan) untuk versi benang 1.0.1, dan 1.0.2. Versi 0.27.5 berfungsi setelah menghapus beberapa artefak.

Saya telah mencoba semua solusi yang dibahas di https://github.com/yarnpkg/yarn/issues/4157. Senang memposting log jika itu akan membantu.

@stieg Saya akan mencobanya nanti hari ini ketika saya mendapatkan waktu luang sekitar makan siang dan memposting hasil. Saya yakin saya masih mendapatkan kesalahan 404 tetapi saya telah mencoba banyak hal pada saat ini, siapa tahu!

Adakah yang menemukan solusi untuk ini?

FWIW: Saya mencoba dengan:

  • Menyeka node_modules
  • Menyeka ~/.yarn
  • curl -o- -L https://yarnpkg.com/install.sh | bash untuk memasang ulang benang 1.0.2
  • yarn install - _tidak ada kesalahan_, itu menginstal semuanya dengan sempurna.

~/.yarnrc :

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


registry "https://registry.npmjs.org"
email [email protected]
lastUpdateCheck 1505977814820
username some-user
````

And my `~/.npmrc`:

//registry.npmjs.org/:_authToken=a-valid-uuid


The `yarn.lock` references look like this in my particular case:

menyelesaikan " https://registry.npmjs.org/@acme/some -module / - / some-module-0.1.1.tgz # valid-git-sha"
``

Menarik. Setelah meletakkan registri di file .yarnrc saya, saya dapat menginstal paket saya. Namun, saya menghapusnya untuk memeriksa apakah itu pelakunya, dan masih berhasil (saya menghapus cache saya sehingga Yarn harus mengunduhnya, dan berhasil melakukannya dengan benar).

Saya mencoba penginstalan baru (Debian kali ini, yang lainnya adalah macOS) dan memiliki pengaturan ini di ~/.npmrc dan ~/.yarnrc bekerja sama baiknya di sana. (Catatan: Saya tidak mencoba npm login atau yarn login .)

Menutup sebagai orang yang melaporkan ini telah diselesaikan. Buka kembali dengan langkah-langkah reproduksi konkret jika tidak terselesaikan untuk Anda @carlosduclos .

@BYK Saya memiliki masalah yang sama.
Saya menggunakan pemasangan bersih dari versi benang terbaru.
Dan itu mulai bekerja setelah saya menambahkan registry "https://registry.npmjs.org" menjadi ~/.yarnrc .
Saya pikir ini adalah bug dan harus diselesaikan secara otomatis, bukan secara manual, seperti yang kami lakukan.

@BYK Mungkin membantu untuk dicatat bahwa setiap orang yang telah "melaporkan sebagai terselesaikan" telah menggunakan solusi dari memaksa benang untuk menggunakan registri https://registry.npmjs.org .

Saya pikir masih ada masalah saat mengambil paket pribadi dari registri https://registry.yarnpkg.com , bagaimanapun, dan ini adalah registri default yang digunakan oleh benang (apakah itu masih hanya proxy terbalik ? Mungkin itu tidak menghormati header auth? ).

Langkah-langkah reproduksi beton

  1. Hapus / pindahkan file .npmrc dan .yarnrc sehingga benang menggunakan konfigurasi default.
  2. Temukan paket yang diterbitkan secara pribadi ke registri npm.
    1a. Jika Anda telah mengunduh / menerbitkannya dari mesin yang sama dengan tempat Anda menguji benang, kosongkan npm dan cache benang.
  3. Jalankan npm login atau yarn login untuk mengisi token autentikasi.
  4. Menggunakan versi benang apa pun setelah 0.27.5 , coba instal paket ini.
Hasil yang diharapkan

Paket berhasil dipasang.

Hasil nyata
❤ <strong i="26">@up</strong> ➜  REPO git:(master) ★ yarn add @SCOPE/PACKAGE 
yarn add v1.1.0
info No lockfile found.
[1/5] Validating package.json...
[2/5] Resolving packages...
error An unexpected error occurred: "https://registry.npmjs.org/@SCOPE%2fPACKAGE: Not found".
info If you think this is a bug, please open a bug report with the information provided in "/home/katy/dev/REPO/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

Jika pengelola proyek menemukan instruksi @kmoe dapat direproduksi, tiket ini harus dibuka kembali (setidaknya demi pelanggan yang ada).

Saya setuju dengan @kmoe , masalah yang mendasarinya tidak diperbaiki bahkan di versi benang terbaru. Harap buka kembali masalahnya. Ya, kami memiliki solusi, tetapi solusi! = Solusi dalam kasus ini.

FWIW, ini masih menjadi masalah di 1.1.0. Saya baru saja memverifikasinya (kembali ke sini untuk pemecahan masalah, yaitu registry "https://registry.npmjs.org" ditambahkan ke ~/.yarnrc )

Saya mengalami masalah ini pada benang 1.3.2 dan ini merusak konstruksi kami sekarang. Ini bekerja dengan baik pada benang 0.27.5.

Kami memerlukan token autentikasi dari file .npmrc untuk menginstal paket dari registri pribadi Artifactory kami.

Langkah reproduksi:

  1. Memiliki file .npmrc dengan info otentikasi di dalamnya seperti:
registry=https://artifactory.mycompany.com/artifactory/api/npm/npm-virtual
_auth = myAuthTokenHere
always-auth = true
email = [email protected]
  1. Jalankan yarn install
  2. Dapatkan kesalahan HTTP 401 saat benang mencoba menginstal barang dari registri pribadi:
error An unexpected error occurred: "https://artifactory.mycompany.com/api/npm/npm-virtual/@angular/compiler/-/compiler-4.3.1.tgz: Request failed \"401 Unauthorized\"".

Terkait: # 4672

@stewx Saya juga mengalami masalah yang sama di 1.3.2. Apakah Anda menemukan perbaikan atau cara mengatasinya?

@jamesone Tidak, saya menurunkan versi ke sesuatu seperti 0,27. Ini adalah pemecah kesepakatan untuk proyek kami.

@stewx @jamesone
Tambahkan registry "https://registry.npmjs.org" di .yarnrc Anda dan instal ulang paket privat
Ini akan memberi tahu benang untuk bekerja secara langsung dengan registri npmjs dan itu akan menyelesaikan masalah

Rasanya salah untuk mengunci versi di 0.27.5 hanya untuk menghindari masalah yang satu ini, tetapi sepertinya banyak yang melakukan hal itu _atau_ mengalihkan registry config (meskipun @stewx melaporkan yang tidak menyelesaikan masalah yang dihosting sendiri pendaftar pribadi).

Jika kontributor proyek yang sering tidak punya waktu untuk memperbaikinya dalam jangka pendek, apakah seseorang akan bersedia menyarankan lokasi basis kode di mana perbaikan paling mungkin berhasil, dengan harapan bahwa PR komunitas akan dibuka? 🤔

/ cc @kecens @bestander @BYK @arcanis @ rally25rs @kaylieEB

@Bnaya Ketika Anda mengatakan instal ulang, maksud Anda menghapus node_modules dalam proyek Anda atau membersihkan cache benang?

benang menghapus paket pribadi Anda; benang tambahkan paket pribadi Anda

Dan di file kunci Anda akan melihat https://registry.npmjs.org/*** url dan bukan https://registry.yarnpkg ***

Saya akan menyarankan menambahkan .yarnrc di sebelah package.json Anda

Saya benar-benar membuatnya bekerja dengan meletakkan registry "https://registry.npmjs.org" di ~/.yarnrc , yaitu tidak perlu paket lokal .yarnrc .

Langkah-langkah mereproduksi kesalahan untuk saya:

  • tidak memiliki ~/.yarnrc dimodifikasi
  • buat proyek baru
  • cache benang bersih
  • benang tambahkan privatemodule -> gagal

Jika saya memodifikasi ~/.yarnrc seperti yang disebutkan di atas, langkah-langkah tersebut tidak membuat kesalahan.

Jika saya melihat beberapa proyek saya di mana ada kegagalan, saya melihat bahwa yarn.lock berisi https://registry.yarnpkg.com/@myscope/mypackage/ . Untuk membuat proyek ini bekerja, saya perlu menghapus yarn.lock dan membuatnya kembali, setelah melakukan pembaruan ke ./.yarnrc .

Ini sepertinya menjelaskan mengapa beberapa orang masih memiliki kesalahan bahkan ketika mereka mencoba sesuatu yang berhasil untuk orang lain.

Bagaimana menyelesaikannya sebagai kesimpulan:

  • tambahkan registry "https://registry.npmjs.org" ke ~ / .yarnrc
  • hapus dan buat ulang yarn.lock untuk proyek yang gagal

@TheLudd Meregenerasi yarn.lock dari awal mengalahkan tujuannya.

Sebaliknya, pengelola proyek mungkin ingin mempertimbangkan untuk mencari / mengganti dari yarnpkg.com menjadi npmjs.org , mempertahankan status file kunci mereka saat ini.

@awkaiser Ya, selama tes Anda lulus, Anda dapat melakukannya dan semua kolaborator lain akan memiliki lingkungan yang sama dengan Anda. Jadi tidak benar-benar mengalahkan IMO tujuannya.
Tapi ya Anda juga bisa mencari ganti.

Tetapi aturannya juga bahwa Anda tidak boleh memodifikasi yarn.lock secara manual;)

Jika selalu aman untuk menarik paket terbaru absolut yang memenuhi persyaratan package.json kita, kita tidak akan membutuhkan lockfiles sama sekali. 😜

Biasanya, ya, kita tidak boleh memodifikasi yarn.lock dengan tangan tetapi ini, sebagai bug, mendukung pengecualian untuk aturan itu. Memperbarui referensi lokasi registri dengan pencarian dan penggantian harus mudah dan aman. 🍻

Saya tidak perlu membuat ulang seluruh file kunci saya.
Hanya untuk menghapus dan menginstal paket pribadi

@awkaiser atau siapa pun di utas - satu cara Anda dapat membantu adalah dengan membuat contoh yang dapat direproduksi. Misalnya mendasarkannya dari repo ini https://github.com/KidkArolis/yarn-scopes-issue. Jika Anda dapat menghasilkan repo di mana menjalankan yarn gagal (respons registri khusus, konfigurasi benang tertentu, package.json tertentu, dll.) - Saya kemudian dapat melihat untuk memperbaiki masalah tersebut.

Umumnya:

  1. Anda tidak memerlukan file .yarnrc
  2. Anda tidak perlu .yarnrc untuk memuat registry "https://registry.npmjs.org"
  3. Modul privat dari registry.npmjs.org seharusnya berfungsi
  4. Modul pribadi dari custom.registry.org seharusnya berfungsi

@Detikcom kegagalannya acak. tapi mereka ada di sana.
Seperti yang saya tulis tentang masalah terkait lainnya: itu atau masalah dengan registri benang (mungkin kegagalan caching, header Vary yang buruk pada proxy, apa pun,), atau kasus tepi kompleks di dalam benang yang terjadi hanya dengan registri benang.

Apakah yang ditulis @kmoe pada 25 Sep 2017 tidak cukup? 🤔

Ini mendorong dibukanya kembali masalah ini, menyiratkan reproduksi oleh kontributor.

@KidkArolis Saya tidak yakin bagaimana saya dapat membuat contoh yang dapat direproduksi dalam repositori karena ini berkaitan dengan modul privat dan dengan demikian bergantung pada siapa yang menjalankan benang, bukan? Tetapi langkah saya untuk mereproduksi kesalahan ada di sini https://github.com/yarnpkg/yarn/issues/4451#issuecomment -355248563 dan apa yang @kmoe tulis juga sudah cukup.

Ketika saya mencoba menginstal paket pribadi tanpa mengubah .yarnrc kesalahan yang saya mulai

Terjadi kesalahan tak terduga: " https://registry.yarnpkg.com

Ini menyiratkan bahwa itu terlihat di registri benang dan bukan npm. Bukankah itu kesalahan yang menyebabkan bug ini?

Oke, terima kasih telah memunculkan kembali langkah-langkah reproduksi tersebut. Saya akan mencoba dan melihat-lihat.

Untuk alasan apa pun, menambahkan lokasi eksplisit ini ke .npmrc untuk tempat menemukan paket pribadi saya membuat kesalahan 404 berhenti terjadi di semua repo yang menyebabkan masalah.

@npm-username:registry=https://registry.yarnpkg.com/

Adakah yang punya paket npm pribadi yang bisa mereka tambahkan untuk saya? Nama pengguna: kidkarolis .

Saya kesulitan untuk mendapatkan akun berbayar, sistem Penagihan / Akun mereka sepertinya tidak berfungsi untuk saya atm (saya mendapatkan 402 Payment Required meskipun mereka menagih saya: - "). Jadi sementara saya menunggu npm's dukungan, jika seseorang menambahkan saya ke paket pribadi (jika itu mungkin), itu akan mempercepat segalanya.

Ok, saya pikir itu hanya .. konsistensi akhirnya, akun npm pribadi saya berfungsi sekarang.

Namun, saya belum bisa mereproduksi masalah tersebut :(

Saya mengikuti langkah-langkah yang disediakan oleh @kmoe :

  1. rm ~/.yarnrc && rm ~/.npmrc
  2. yarn cache clean && npm cache clean --force
  3. npm login
  4. yarn add @scope/pkg

Ini menginstal dengan baik (dan tidak jika saya tidak npm login ). Dengan kata lain - bekerja seperti yang diharapkan untuk saya.

Dan dilihat dari yarn.lock, penginstalan saya melewati https://registry.yarnpkg.com dan tampaknya menggunakan auth seperti yang diharapkan. Mungkinkah ada masalah pada server di masa lalu, tetapi sekarang sudah teratasi?

Oke, saya pikir mereproduksi sesuatu.

Jika saya menambahkan <strong i="6">@qubit</strong>:registry=https://registry.npmjs.org/ ke .npmrc - penginstalan tidak lagi berfungsi.
Saya pikir baris itu ditambahkan jika Anda login dengan npm login --scope=@qubit dan tidak ditambahkan jika Anda login hanya dengan npm login . Akan melihat cara memperbaikinya selanjutnya.

@Kidkrolis cara umum lainnya untuk menyetel konfigurasi itu adalah:

npm config set <strong i="8">@qubit</strong>:registry https://registry.npmjs.org

Membuka sambutan PR - # 5162 (atau bahkan QA).

@Kid_jakarta Terima kasih atas PR. Namun menurut saya masalahnya tidak hanya terletak pada kasus "--scope", tetapi dalam kasus yang lebih umum di mana repo pribadi juga mencerminkan paket publik dengan auth.

Omong-omong, @ bytheway875 , trik Anda menggunakan https://registry.yarnpkg.com/ sebagai registri berhasil untuk saya.

Situasi saya:

  • Sasaran: instal paket pribadi dengan yarn dari org (@ org-name) di npmjs.com menggunakan authToken di file lokal .npmrc selama pembuatan CI (GitLab), jadi belum masuk ke npm .
  • bekerja dengan npm
  • tidak ada masalah pada mesin dev (mac), saya dapat npm login dan yarn hanya berfungsi ATAU saya dapat keluar dari npm tetapi secara manual membuat file lokal / HOME dir .npmrc dengan satu baris: //registry.npmjs.org/:_authToken=token dan yarn hanya berfungsi (metode kedua _might_ berfungsi karena cache lokal, tidak mencoba menghapusnya)
  • .yarnrc trik dari atas tidak berhasil

_Satu-satunya cara agar ini berfungsi adalah dengan membuat file .npmrc lokal di bawah ini sebelum menjalankan yarn install di CI: _

@org-name:registry=https://registry.yarnpkg.com/
always-auth=true
_authToken=token

Saya mengalami masalah serupa dengan file .npmrc . Yang harus saya lakukan adalah mengatur pengkodean file .npmrc ke ANSI (di Windows Anda dapat menggunakan notepad.exe> ​​Save As ...).
Anda dapat menguji bagaimana benang melihat konten file .npmrc dengan menggunakan yarn config list

Saya tidak bisa mengerjakan ini dengan v1.4.1 . Saya memiliki repo Nexus pribadi dan saya menggunakannya sebagai cache / proxy ( seperti ini ). Sepertinya saya tidak dapat menemukan petunjuk yang pasti, jadi mungkin saja saya melakukan kesalahan. Saya mengambil sintaks yarn config sini dan yarn login sini .

Sunting : Seharusnya saya menyebutkan bahwa saya telah mencoba masuk melalui NPM terlebih dahulu untuk mendapatkan .npmrc dibutuhkan sebelum mencoba dengan yarn .

Di bawah ini persis apa yang saya lakukan untuk menguji.

Periksa Merge Commit (dc705768)

git tag --contains dc705768
v1.4.0
v1.4.1

Mendirikan

Buat Dockerfile untuk memberikan lingkungan dasar yang konsisten untuk pengujian.

# Build
#  docker build -t yarn-private-registry-test .
# Run
#  docker run -it --rm yarn-private-registry-test

FROM debian:9.3-slim

WORKDIR /projects

RUN apt-get update \
  && apt-get --yes install curl gnupg \
  && curl -sL https://deb.nodesource.com/setup_8.x | bash - \
  && apt-get install --yes nodejs \
  && curl -OL https://github.com/yarnpkg/yarn/releases/download/v1.4.1/yarn_1.4.1_all.deb \
  && find . -name yarn*.deb -exec dpkg --install {} \; \
  && find . -name yarn*.deb -exec rm {} \;

Bangun Image Docker

docker build -t yarn-private-registry-test .

Uji Benang

Petunjuk : Terus keluar dan mulai ulang container Docker untuk mendapatkan lingkungan yang bersih.

Tidak Ada Konfigurasi

Pastikan lingkungan berfungsi dengan menginisialisasi proyek dan menambahkan dependensi tanpa membuat perubahan konfigurasi apa pun.

Jalankan Docker Container

docker run -it --rm yarn-private-registry-test

Uji

Tambahkan ketergantungan left-pad .

mkdir yarn \
  && cd yarn \
  && yarn init --yes \
  && yarn add left-pad
yarn init v1.4.1
warning The yes flag has been set [...snip...]
success Saved package.json
Done in 0.03s.
yarn add v1.4.1
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
└─ [email protected]
Done in 0.52s.

Konfigurasi Registri Pribadi

Jalankan Docker Container

docker run -it --rm yarn-private-registry-test

Uji

mkdir yarn \
  && cd yarn \
  && yarn init --yes \
  && yarn config set registry https://example.com/repository/npm-group/ \
  && yarn login
yarn init v1.4.1
warning The yes flag has been set [...snip...]
success Saved package.json
Done in 0.03s.
yarn config v1.4.1
success Set "registry" to "https://example.com/repository/npm-group/".
Done in 0.04s.
yarn login v1.4.1
question npm username: myusername
question npm email: [email protected]
Done in 6.25s.

Tambahkan ketergantungan left-pad .

yarn --verbose add left-pad
yarn add v1.4.1
verbose 0.349 Checking for configuration file "/projects/yarn/.npmrc".
verbose 0.35 Checking for configuration file "/usr/local/share/.npmrc".
verbose 0.35 Checking for configuration file "/usr/etc/npmrc".
verbose 0.352 Checking for configuration file "/root/.npmrc".
verbose 0.353 Checking for configuration file "/projects/yarn/.npmrc".
verbose 0.353 Checking for configuration file "/projects/.npmrc".
verbose 0.355 Checking for configuration file "/projects/yarn/.yarnrc".
verbose 0.355 Checking for configuration file "/usr/local/share/.yarnrc".
verbose 0.357 Found configuration file "/usr/local/share/.yarnrc".
verbose 0.358 Checking for configuration file "/usr/etc/yarnrc".
verbose 0.358 Checking for configuration file "/root/.yarnrc".
verbose 0.359 Checking for configuration file "/projects/yarn/.yarnrc".
verbose 0.359 Checking for configuration file "/projects/.yarnrc".
verbose 0.365 current time: 2018-01-25T21:55:48.886Z
info No lockfile found.
verbose 0.405 Performing "GET" request to "https://yarnpkg.com/latest-version".
[1/4] Resolving packages...
verbose 0.48 Performing "GET" request to "https://example.com/repository/npm-group/left-pad".
verbose 0.52 Request "https://example.com/repository/npm-group/left-pad" finished with status code 401.
verbose 0.522 Error: Couldn't find package "left-pad" on the "npm" registry.
    at new MessageError (/usr/share/yarn/lib/cli.js:186:110)
    at NpmResolver.<anonymous> (/usr/share/yarn/lib/cli.js:50354:15)
    at Generator.next (<anonymous>)
    at step (/usr/share/yarn/lib/cli.js:98:30)
    at /usr/share/yarn/lib/cli.js:109:13
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
error An unexpected error occurred: "Couldn't find package \"left-pad\" on the \"npm\" registry.".
info If you think this is a bug, please open a bug report with the information provided in "/projects/yarn/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
verbose 0.809 Request "https://yarnpkg.com/latest-version" finished with status code 200.

Periksa .yarnrc

cat /usr/local/share/.yarnrc
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


registry "https://example.com/repository/npm-group/"
email [email protected]
lastUpdateCheck 1516917349331
username myusername

Uji NPM

Lewati langsung ke konfigurasi yang diinginkan karena berhasil.

Konfigurasi Registri Pribadi

Jalankan Docker Container

docker run -it --rm yarn-private-registry-test

Uji

mkdir npm \
  && cd npm \
  && npm init --yes \
  && npm config set registry https://example.com/repository/npm-group/ \
  && npm login
Wrote to /projects/npm/package.json:

{
  "name": "npm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}


Username: myusername
Password:
Email: (this IS public) [email protected]
Logged in as myusername on https://example.com/repository/npm-group/.

Tambahkan ketergantungan left-pad .

npm --verbose install left-pad
npm info it worked if it ends with ok
npm verb cli [ '/usr/bin/node',
npm verb cli   '/usr/bin/npm',
npm verb cli   '--verbose',
npm verb cli   'install',
npm verb cli   'left-pad' ]
npm info using [email protected]
npm info using [email protected]
npm verb npm-session 0ed36c84804378c8
npm http fetch GET 200 https://example.com/repository/npm-group/left-pad 78ms
npm http fetch GET 200 https://example.com/repository/npm-group/left-pad/-/left-pad-1.2.0.tgz 28ms
npm verb correctMkdir /root/.npm/_locks correctMkdir not in flight; initializing
npm verb makeDirectory /root/.npm/_locks creation not in flight; initializing
npm verb lock using /root/.npm/_locks/staging-2f9f45630e5bbb1a.lock for /projects/npm/node_modules/.staging
npm info lifecycle [email protected]~preinstall: [email protected]
npm info linkStuff [email protected]
npm verb linkBins [email protected]
npm verb linkMans [email protected]
npm info lifecycle [email protected]~install: [email protected]
npm info lifecycle [email protected]~postinstall: [email protected]
npm verb unlock done using /root/.npm/_locks/staging-2f9f45630e5bbb1a.lock for /projects/npm/node_modules/.staging
npm verb saving [ { name: 'left-pad', spec: '^1.2.0', save: 'dependencies' } ]
npm info lifecycle undefined~preshrinkwrap: undefined
npm info lifecycle undefined~shrinkwrap: undefined
npm notice created a lockfile as package-lock.json. You should commit this file.
npm info lifecycle undefined~postshrinkwrap: undefined
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

+ [email protected]
added 1 package in 0.398s
npm verb exit [ 0, true ]
npm info

@ryanjaeb Terima kasih atas laporan terperinci. Satu hal yang saya lewatkan untuk memberi tahu Anda apa yang mungkin salah di sini adalah konten file ~/.npmrc dan ~/.yarnrc . Anda memang menempelkan .yarnrc , tetapi tidak mengandung kata sandi. Juga tanpa file .npmrc untuk perbandingan, sulit untuk menunjukkan masalahnya.

Kasus penggunaan Anda seharusnya berfungsi dengan baik di ^ 1.4.0, tetapi ini semua tentang tampilan file konfigurasi.

Tbh dengan Anda, saya tidak pernah menggunakan yarn login , pertama saya npm login dan kemudian menggunakan yarn . Dalam contoh di atas, jika Anda pertama kali melakukan npm set config registry ... && npm login dan kemudian menjalankan add left-pad - apakah berhasil? Jika npm berfungsi, begitu juga benang. Jadi saya bertanya-tanya apakah perintah yarn login yang rusak.

@KidkArolis Dengan mengabaikan yarn login dan berharap dapat membuatnya bekerja hanya dengan npm login , saya dapat membuat beberapa kemajuan. Saya melihat dua hal.

.npmrc

Dokumen untuk npm-login sepertinya tidak cocok dengan apa yang sebenarnya saya lihat di .npmrc . Secara khusus, argumen --always-auth untuk perintah npm login tidak berdampak pada konfigurasi, meskipun dokumen mengatakan:

Dapat digunakan dengan --registry dan / atau --scope, misalnya
...
Konfigurasi khusus registri dari selalu-auth lebih diutamakan daripada konfigurasi global apa pun.

Namun, terlepas dari apakah saya menggunakan argumen itu atau tidak, saya selalu mendapatkan .npmrc . Kedua:

npm config set registry https://example.com/repository/npm-group/ \
  && npm login --registry=https://example.com/repository/npm-group/

dan

npm config set registry https://example.com/repository/npm-group/ \
  && npm login --registry=https://example.com/repository/npm-group/ --always-auth

menghasilkan .npmrc :

registry=https://example.com/repository/npm-group/
//example.com/repository/npm-group/:_authToken=NpmToken.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Mengendus lalu lintas yang menuju ke registri saya menunjukkan bahwa NPM mengirim token autentikasi terlepas dari:

GET /repository/npm-group/left-pad HTTP/1.1
Host: example.com
user-agent: npm/5.6.0 node/v8.9.4 linux x64
npm-in-ci: false
npm-scope: 
npm-session: c4c14c0b37be7bd5
referer: install left-pad
pacote-req-type: packument
pacote-pkg-id: registry:manifest
accept: application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*
authorization: Bearer NpmToken.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
accept-encoding: gzip,deflate
X-Forwarded-Proto: https
X-Forwarded-For: 10.10.10.1
X-Forwarded-Host: example.com
X-Forwarded-Server: example.com
Connection: Keep-Alive

Benang tidak mengirim token kecuali always-auth disetel. Secara eksplisit mengatur flag always-auth di .npmrc membuat semuanya bekerja seperti yang diharapkan.

npm config set always-auth true \
    && cat ~/.npmrc
registry=https://example.com/repository/npm-group/
//example.com/repository/npm-group/:_authToken=NpmToken.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
always-auth=true

Selain mengetahui perbedaan perilaku antara NPM dan Yarn, saya tidak cukup paham untuk mengetahui perilaku mana yang benar.

yarn login

Saya pikir Anda mungkin benar tentang yarn login tidak berfungsi, tetapi saya belum mengujinya secara ekstensif. Mengabaikan .npmrc dan hanya menggunakan yarn , saya mencoba meniru konfigurasi NPM.

yarn config set registry https://example.com/repository/npm-group/ \
    && yarn config set always-auth true \
    && yarn login

.yarnrc :

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


registry "https://example.com/repository/npm-group/"
always-auth true
email [email protected]
lastUpdateCheck 1517883362958
username myusername

Apa pun yang saya lakukan, saya tidak pernah diminta untuk memasukkan kata sandi.

@KidkArolis Bagi saya npm bekerja tanpa eksplisit always-auth=true di .npmrc dan benang (1.3.2 atau 1.4.0) tidak. Dalam kasus saya, saya mencoba mengarahkan semua permintaan ke registri virtual di artifactory. Dengan always-auth=true dan authToken di .npmrc - ini bekerja di 1.3.2 , jadi tidak jelas apa yang sebenarnya diperbaiki di 1.4.0 .

Ini sepertinya masih menjadi masalah, khususnya terkait dengan repo Nexus kami.

Saya sudah mencoba beberapa pendekatan:

  1. Menghapus ~/.yarnrc sepenuhnya dan hanya mengandalkan yang ada di ~/.npmrc .
  2. Menyia-nyiakan pengaturan registri di ~/.yarnrc .

Tampaknya benang tidak menggunakan nilai hash _auth (misalnya _auth=xyz ) dari ~/.npmrc

Informasi versi

NPM

npm --version                                                                                                                                                                                                                                                                                                      
5.6.0

Benang

yarn --version
1.5.1

Berjalan di OS X 10.13.2.

NPMRC

~/.npmrc terlihat seperti ini (beberapa pengaturan _values_ dihilangkan karena alasan yang jelas):

registry=http://nexus-repo:8081/content/repositories/npm-all
init.author.name=Juan Smith
[email protected]
init.author.url=http://nexus-repo:8081/content/repositories/npm/
[email protected]
_auth=BASE64-HASH-USERNAME-PASSWORD
always-auth=true

BENANG

~/.yarnrc terlihat seperti ini (sekali lagi nilai yang jelas dihilangkan):

registry "http://nexus-repo:8081/content/repositories/npm-all//"
email [email protected]
lastUpdateCheck 1521495247797
username jsmith

¯_ (ツ) _ / ¯

Tidak begitu yakin harus pergi ke mana setelah ini. Tidak sepenuhnya jelas apa yang sedang terjadi, selain semua pembuatan benang gagal dengan cara berikut:

error An unexpected error occurred: "http://nexus-repo:8081/content/groups/npm-all/lru-cache/-/lru-cache-4.1.2.tgz: Request failed \"401 Unauthorized\"".

FWIW, IANADOE (I Am Not A Dev Ops Engineer) dan saya hanya mencoba memanfaatkan paket yang bersandar pada benang untuk membangun elektron. Ini mungkin saja saya tidak tahu cara mengatur base64 username | hash kata sandi untuk benang. Saya belum dapat menemukan dokumen yang menjelaskan hal itu.

@ezweave Sonatype memiliki dokumentasi yang sangat npm Bearer Token Realm di Nexus dan menggunakan npm login di workstation saya. Ex:

npm config set registry http://nexus-repo:8081/content/repositories/npm-all
npm login --registry=http://nexus-repo:8081/content/repositories/npm-all --always-auth
npm config set always-auth true

Pastikan itu berfungsi dengan NPM sebelum mencoba Yarn. Saya tidak tahu apakah itu penting, tetapi Anda memiliki dua garis miring ( // ) di registri .yarnrc .

@ryanjaeb jadi, tim pengembang kami telah mengunci Nexus untuk _only_ mendukung Realm LDAP. Ini mungkin inti dari masalahnya, tetapi ada banyak alat yang mengandalkan yarn yang tidak dapat saya gunakan karena tampaknya ini tidak didukung. Saya sudah mencoba menambahkan _auth sebagai parameter dalam sintaks yang sesuai, dan sebagainya. Sepertinya tidak ada yang berhasil. (FWIW: beberapa garis miring adalah perbaikan yang seharusnya untuk masalah terkait, saya telah melakukannya dengan dan tanpa tidak berhasil.)

Dapat mengonfirmasi bahwa autentikasi Yarn rusak dengan Nexus. yarn login tidak meminta kata sandi tetapi mengatakan berhasil masuk (tidak - tidak ada perubahan pada file rc),

Publikasikan tidak meminta kata sandi dan tidak mempublikasikan tetapi tidak pernah membaca dari token __auth di mana pun itu diatur agar Anda harus masuk setiap saat. Dan Anda juga tidak bisa menggunakan benang dalam skenario CI.

benang tidak bekerja di dalam CI. Akankah ini berhasil?

Masalah ini seharusnya sudah diperbaiki oleh https://github.com/yarnpkg/yarn/pull/5216. Humas itu punya uraian yang berisi ini:

Fixes #4157, #4451, #4672, #4119.

dan itu menyebabkan GitHub hanya menutup # 4157 secara otomatis saat PR itu digabungkan. Masalah lain mungkin juga sudah ditutup.

@valscion ini mungkin membantu lebih jauh dengan masalah ini - https://github.com/yarnpkg/yarn/pull/5322 , tetapi lolos dari celah ..

Menambahkan titik data lain - benang 1.8.x + gagal pada agen build saya (VSTS). Mengembalikan HANYA yarn ke 1.7.x menyelesaikan masalah. Ini melihat registri yang benar, tetapi tidak menggunakan token yang disuntikkan ke .npmrc oleh agen pembuat. Saya menyadari ada banyak variabel di sini, tetapi saya pikir itu mungkin berguna.

Menjalankan 1.9.x secara lokal, di mana token disimpan di pengguna saya .npmrc , berfungsi dengan baik.

Versi 1.9.x.

2018-08-03T21:17:04.9324575Z [command]C:\Windows\system32\cmd.exe /D /S /C "C:\Builds\_tool\yarn\1.9.4\x64\yarn-v1.9.4\bin\yarn.cmd build"
2018-08-03T21:17:05.4481355Z yarn run v1.9.4
2018-08-03T21:17:05.5418442Z $ lerna clean && lerna bootstrap
2018-08-03T21:17:08.3387809Z lerna info version 2.11.0
2018-08-03T21:17:08.3387809Z lerna info versioning independent
2018-08-03T21:17:08.3856545Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.3856545Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.3856545Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.3856545Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4012821Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4012821Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4169058Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4325326Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.4325326Z lerna info clean removing <REMOVED>
2018-08-03T21:17:08.7606628Z lerna success clean finished
2018-08-03T21:17:09.5145894Z lerna info version 2.11.0
2018-08-03T21:17:09.5145894Z lerna info versioning independent
2018-08-03T21:17:09.5419287Z lerna info Bootstrapping 9 packages
2018-08-03T21:17:09.5419287Z lerna info lifecycle preinstall
2018-08-03T21:17:09.5576221Z lerna info Installing external dependencies
2018-08-03T21:17:12.8857424Z lerna ERR! execute callback with error
2018-08-03T21:17:12.8857424Z lerna ERR! Error: Command failed: yarn install --mutex network:42424 --non-interactive
2018-08-03T21:17:12.8857424Z lerna ERR! warning package.json: No license field
2018-08-03T21:17:12.8857424Z lerna ERR! warning Waiting for the other yarn instance to finish (4048)
2018-08-03T21:17:12.8857424Z lerna ERR! warning Waiting for the other yarn instance to finish (6896)
2018-08-03T21:17:12.8857424Z lerna ERR! warning No license field
2018-08-03T21:17:12.8857424Z lerna ERR! error An unexpected error occurred: "<INTERNAL_REGISTRY>/lodash.foreach/-/lodash.foreach-2.3.0.tgz: Request failed \"401 Unauthorized\"".
2018-08-03T21:17:12.8857424Z lerna ERR! [1/4] Resolving packages...
2018-08-03T21:17:12.8857424Z lerna ERR! [2/4] Fetching packages...
2018-08-03T21:17:12.8857424Z lerna ERR! info If you think this is a bug, please open a bug report with the information provided in "C:\\Builds\\6\\s\\packages\\<REMOVED>\\yarn-error.log".
2018-08-03T21:17:12.8857424Z lerna ERR! info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
2018-08-03T21:17:12.8857424Z lerna ERR! 
2018-08-03T21:17:12.8857424Z lerna ERR!     at Promise.all.then.arr (C:\Builds\6\s\node_modules\lerna\node_modules\execa\index.js:236:11)
2018-08-03T21:17:12.8857424Z lerna ERR!     at <anonymous>
2018-08-03T21:17:12.9482437Z lerna WARN complete Waiting for 1 child process to exit. CTRL-C to exit immediately.
2018-08-03T21:17:13.0732458Z { Error: Command failed: yarn install --mutex network:42424 --non-interactive
2018-08-03T21:17:13.0732458Z warning package.json: No license field
2018-08-03T21:17:13.0732458Z warning Waiting for the other yarn instance to finish (4048)
2018-08-03T21:17:13.0732458Z warning Waiting for the other yarn instance to finish (6896)
2018-08-03T21:17:13.0732458Z warning No license field
2018-08-03T21:17:13.0732458Z error An unexpected error occurred: "<INTERNAL_REGISTRY>/lodash.foreach/-/lodash.foreach-2.3.0.tgz: Request failed \"401 Unauthorized\"".
2018-08-03T21:17:13.0732458Z [1/4] Resolving packages...
2018-08-03T21:17:13.0732458Z [2/4] Fetching packages...
2018-08-03T21:17:13.0732458Z info If you think this is a bug, please open a bug report with the information provided in "C:\\Builds\\6\\s\\packages\\<REMOVED>\\yarn-error.log".
2018-08-03T21:17:13.0732458Z info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
2018-08-03T21:17:13.0732458Z 
2018-08-03T21:17:13.0732458Z     at Promise.all.then.arr (C:\Builds\6\s\node_modules\lerna\node_modules\execa\index.js:236:11)
2018-08-03T21:17:13.0732458Z     at <anonymous>
2018-08-03T21:17:13.0732458Z     at process._tickCallback (internal/process/next_tick.js:188:7)
2018-08-03T21:17:13.0732458Z   code: 1,
2018-08-03T21:17:13.0732458Z   killed: false,
2018-08-03T21:17:13.0732458Z   stdout: '[1/4] Resolving packages...\n[2/4] Fetching packages...\ninfo If you think this is a bug, please open a bug report with the information provided in "C:\\\\Builds\\\\6\\\\s\\\\packages\\\\<REMOVED>\\\\yarn-error.log".\ninfo Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.\n',
2018-08-03T21:17:13.0732458Z   stderr: 'warning package.json: No license field\nwarning Waiting for the other yarn instance to finish (4048)\nwarning Waiting for the other yarn instance to finish (6896)\nwarning No license field\nerror An unexpected error occurred: "<INTERNAL_REGISTRY>/lodash.foreach/-/lodash.foreach-2.3.0.tgz: Request failed \\"401 Unauthorized\\"".\n',
2018-08-03T21:17:13.0732458Z   failed: true,
2018-08-03T21:17:13.0732458Z   signal: null,
2018-08-03T21:17:13.0732458Z   cmd: 'yarn install --mutex network:42424 --non-interactive',
2018-08-03T21:17:13.0732458Z   timedOut: false,
2018-08-03T21:17:13.0732458Z   exitCode: 1 }
2018-08-03T21:17:13.0888721Z error Command failed with exit code 1.
2018-08-03T21:17:13.0888721Z info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Versi 1.7.X.

2018-08-03T21:33:16.4477199Z [command]C:\Windows\system32\cmd.exe /D /S /C "C:\Builds\_tool\yarn\1.7.0\x64\yarn-v1.7.0\bin\yarn.cmd build"
2018-08-03T21:33:16.9633413Z yarn run v1.7.0
2018-08-03T21:33:17.0727225Z $ lerna clean && lerna bootstrap
2018-08-03T21:33:19.2509802Z lerna info version 2.11.0
2018-08-03T21:33:19.2509802Z lerna info versioning independent
2018-08-03T21:33:19.2666043Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.2666043Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.2666043Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.2666043Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.2978554Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.5478528Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.5478528Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.5478528Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.6728520Z lerna info clean removing <REMOVED>
2018-08-03T21:33:19.8759839Z lerna success clean finished
2018-08-03T21:33:20.5947225Z lerna info version 2.11.0
2018-08-03T21:33:20.5947225Z lerna info versioning independent
2018-08-03T21:33:20.6103497Z lerna info Bootstrapping 9 packages
2018-08-03T21:33:20.6103497Z lerna info lifecycle preinstall
2018-08-03T21:33:20.6415982Z lerna info Installing external dependencies
2018-08-03T21:33:23.1103303Z lerna info Symlinking packages and binaries
2018-08-03T21:33:23.1415791Z lerna info lifecycle postinstall
2018-08-03T21:33:23.1415791Z lerna info lifecycle prepublish
2018-08-03T21:33:23.1415791Z lerna info lifecycle prepare
2018-08-03T21:33:23.1415791Z lerna success Bootstrapped 9 packages
2018-08-03T21:33:23.1572133Z $ ts-node ./build/index.ts
2018-08-03T21:33:58.5218101Z Done in 41.54s.

Hai teman-teman, saya memiliki permintaan untuk orang-orang yang mengikuti masalah ini dan menggunakan registri pribadi.

Kami sedang mempertimbangkan untuk menghapus nama host registri dari lockfile. Ini akan membuatnya lebih mudah untuk beralih dari registri pribadi ke yang lain, tetapi sisi negatifnya adalah bahwa semua registri perlu menggunakan URL yang serupa (karena nama host tidak akan menjadi bagian dari URL, kami hanya akan menggabungkannya saat runtime dengan yang aktif. konfigurasi).

Bisakah Anda membantu kami mengonfirmasi di # 5892 bahwa alur kerja ini akan berfungsi untuk penyedia registri pribadi Anda (atau beri tahu kami jika tidak)? Itu akan membantu kami mendapatkan tingkat kepercayaan yang dibutuhkan untuk melakukan perubahan ini. Terima kasih!

Saya mengalami masalah dengan yarn publish tidak membaca token autentikasi dari .npmrc juga. Saya menjalankan ini di Ubuntu.

Versi

benang - 1.9.4
npm - 5.5.1

~ / .npmrc

Inilah tampilan ~/.npmrc (dengan token dan registri dikaburkan):

registry=http://myprivateregistry.net/
//myprivateregistry.net/:_authToken="myAuthToken"

Keluaran

Ketika saya menjalankan yarn publish --noninteractive , saya menerima kesalahan berikut:

yarn publish v1.9.4
[1/4] Bumping version...
info Current version: 2.1.3
[2/4] Logging in...
error No token found and can't prompt for login when running with --non-interactive.
info Visit https://yarnpkg.com/en/docs/cli/publish for documentation about this command.

Langkah debug

Saya sudah mencoba yang berikut ini tetapi tidak berhasil:

  • Menyalin ~/.npmrc ke .npmrc di direktori proyek saya
  • Menjalankan yarn login dengan kredensial saya sebelum menjalankan yarn publish

Saya juga telah memverifikasi bahwa menjalankan npm publish berhasil melewati langkah otentikasi (gagal pada langkah pembuatan versi karena tidak mengizinkan saya mengganti nomor versi yang sama. Inilah mengapa saya ingin menggunakan yarn publish --non-interactive , karena ini memungkinkan untuk mengunggah, katakanlah, README berubah dengan nomor versi yang sama)

Apakah ada hal lain yang saya lewatkan? Terima kasih!

@ liuhelen10 Apakah Anda memiliki file .yarnrc di dalam proyek Anda? Ini berfungsi untuk saya dengan token yang disimpan di dalam ~/.npmrc

Contoh

$ cat .yarnrc 
registry "https://registry.npmjs.org/"

always-auth = true in .npmrc berhasil, tidak menerima 401 lagi saat menggunakan Yarn.
Yang tidak masuk akal tapi terserah :)

ini telah dilaporkan pada tahun 2017, sekarang tahun 2019 dan masalah ini masih ada.

Setuju, ini masih tidak berhasil.

.npmrc

always-auth=true
<strong i="7">@somename</strong>:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=[token]

.yarnc

"<strong i="11">@somename</strong>:registry" "https://npm.pkg.github.com/"

Saya juga mendapatkan kesalahan dengan npm.pkg.github.com:

Integrity checked failed (none of the specified algorithms are supported

Saya juga mendapatkan kesalahan dengan npm.pkg.github.com:

Integrity checked failed (none of the specified algorithms are supported

Mendapatkan ini juga

Saya memiliki masalah yang sama menggunakan Nexus versi 3, tetapi diselesaikan dengan menggunakan pendekatan yang disebutkan oleh @plitex dalam masalah ini https://github.com/yarnpkg/yarn/issues/3093#issuecomment -317671597.

Letakkan konten ini di file .npmrc . Anda tidak perlu memiliki pengaturan apa pun di file .yarnrc .

always-auth=true
registry=https://nexus.server.com/repository/npm-group/
//nexus.server.com/repository/npm-group/:_authToken={AUTH_TOKEN}

benang --versi
1.17.3

npm --version
6.10.2

@nbransby , @revmischa : Lihat juga masalah # 7552, mungkin pesan kesalahannya benar dalam hal ini.

Dua hal yang membantu saya:

  1. selalu-auth = true
  2. rm yarn.lock

Saya mulai mendapatkan kesalahan ini pada benang 1.19.1. Sebelum benang itu tampaknya mengambil informasi registri dan token dengan benar dari .npmrc , tetapi dengan 1.19.1, saya harus menambahkan konfigurasi registry di .yarnrc juga, jika tidak saya baru saja mendapat kesalahan 401.

Setelah selesai, itu berhasil, dan terus mengambil token dari .npmrc . Sepertinya regresi bagi saya - tampaknya tidak ada alasan bagus untuk mereplikasi konfigurasi registri dari .npmrc menjadi .yarnrc .

Seperti @rocketraman , segera setelah saya menginstal benang 1.19.1, saya mulai mengalami 401 saat mencoba menginstal paket terbatas dari registri pribadi (nexus). npm install berfungsi dengan baik.

Benang yang diturunkan dan semuanya bekerja kembali:

curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.17.3

dapat mengonfirmasi bahwa ini MASIH menjadi masalah

Mendapatkan 401 kesalahan saat menjalankan yarn install

Request "https://npm.pkg.github.com/user/@scope/package" finished with status code 401.

dimana npn install berjalan tanpa masalah

Saya telah menghabiskan 2 jam terakhir untuk men- debug masalah ini dan terima kasih kepada teman saya

Berbagi di sini untuk siapa saja yang mungkin berjuang dengan hal serupa.

Kasus Penggunaan

Saya menerapkan proyek yang menggunakan yarn ruang kerja ke Heroku. Bahkan jika saya menjatuhkan yarn.lock dan menggunakan npm install , proyek ini dibangun dengan ruang kerja dan _tidak akan berfungsi sama sekali_ tanpa yarn .

Proyek ini bergantung pada paket yang dihosting di Paket GitHub dan perlu mengautentikasi terhadap GitHub melalui token.

Masalah

Heroku akan melihat yarn.lock dan menginstal dependensi dengan yarn , yang akan mengabaikan file ~/.npmrc yang saya buat sebelum dibuat.

Pra-bangun, saya akan lari

echo "always-auth=true\n//npm.pkg.github.com/:_authToken=${GITHUB_NPM_TOKEN}\" >> ~/.npmrc",

Ini membuat file, ~/.npmrc , dengan konten ini:

always-auth=true
//npm.pkg.github.com/:_authToken=whatevermytokenis

yarn akan mengabaikan ini dan gagal saat mencoba menarik ketergantungan dari registri paket GitHub dengan 401 Unauthorized .

Solusi

Andrei menyebutkan aliasing _hanya org_ untuk menggunakan registri GitHub, dan _then_ menambahkan token registri GitHub di bawah.

Pada dasarnya, mengubah sedikit file ~/.npmrc untuk menambahkan yang berikut:

always-auth=true
+<strong i="36">@MY_ORG</strong>:registry=https://npm.pkg.github.com/

//npm.pkg.github.com/:_authToken=whatevermytokenis

Itu menyelesaikan semuanya dan tiba-tiba, yarn menggunakan token autentikasi yang disediakan untuk npm.pkg.github.com untuk paket apa pun di bawah @MY_ORG yang merupakan org GitHub.

Wah! Saya harap ini membantu seseorang! 💞

Ini masih menjadi masalah !! Pemasangan NPM berjalan tanpa masalah, tambah benang
error Couldn't find package "@diligentcorp/atlas-react" on the "npm" registry. info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

Di mesin windows saya, masalahnya adalah folder pengguna dengan file .npmrc level pengguna saya berada di drive jaringan. Folder pengguna lokal di mesin tidak memiliki file .npmrc, tetapi sepertinya benang terlihat di folder ini. Menyalin .npmrc dari drive jaringan ke folder pengguna lokal memperbaiki masalah (token otentikasi disimpan di tingkat pengguna .npmrc).

Saya menemukan bahwa secara tidak sengaja setelah mengetik "cd ~" ke git bash saya dan itu beralih ke folder home jarak jauh (yang tidak pernah saya gunakan).

Solusi @TejasQ tidak berhasil untuk saya.

Saya juga menggunakan Paket GitHub.
Masih mendapatkan 401 unauthorized meskipun berfungsi dengan baik dengan npm

Saya berhasil membuatnya bekerja dengan benang v1.22.0

.npmrc

always-auth=true
<strong i="7">@fortawesome</strong>:registry=https://npm.fontawesome.com
//npm.fontawesome.com/:_authToken=xyz-xyz-xyz-xyz

.yarnrc

"<strong i="11">@fortawesome</strong>:registry" "https://npm.fontawesome.com"

registry "https://some-regular-registry.org"

dan kemudian jalankan: yarn add @fortawesome/fontawesome-pro

Terjadi juga pada saya, saya berharap saya bisa membuatnya bekerja hanya dengan .npmrc , tetapi itu hanya berfungsi ketika menambahkan .yarnrc , jadi kita harus menduplikasi konfigurasi hanya untuk benang.

Saya pikir inilah yang saya hadapi. Ini berfungsi ketika .npmrc ada di direktori home, tetapi tidak di direktori proyek (diperlukan untuk jenkins / travis).
https://github.com/yarnpkg/yarn/issues/8034

Ini menyelesaikannya untuk saya: https://github.com/yarnpkg/yarn/issues/4451#issuecomment -570691809

Pastikan Anda tidak memiliki /name setelah registri saat menyetel yang tercakup:

- <strong i="7">@4r7d3c0</strong>:registry=https://npm.pkg.github.com/4r7d3c0
+ <strong i="8">@4r7d3c0</strong>:registry=https://npm.pkg.github.com

Sesuai dokumen, registry=https://npm.pkg.github.com/OWNER , saya lupa bahwa pemiliknya tidak perlu berada di sana saat mengatur cakupan. NPM bisa mengatasinya, tapi benang tidak bisa.

Bagi mereka yang menggunakan alias, periksa solusi ini: https://github.com/yarnpkg/yarn/issues/8130#issuecomment -636281053

Harus membagi tingkat pengguna .npmrc dan tingkat proyek .npmrc untuk membuat benang menghormati token paket GitHub. Memindahkan deklarasi registri bernama dari tingkat pengguna ke tingkat proyek adalah kuncinya

Isi dari ~/.npmrc

_auth=#####TOKEN_FOR_ARTIFACTORY#####
always-auth=true
registry=https://artifactory.mycompany.net/artifactory/api/npm/npm/
//npm.pkg.github.com/:_authToken=####GitHub_NPM_REGISTRY_TOKEN#####

Isi dari ~/projects/blah/.npmrc

<strong i="14">@mycompany</strong>:registry=https://npm.pkg.github.com

Sampai saya memindahkan entri registri paket keluarga bernama ^ ke level proyek .npmrc , yarn install memberi saya 401 (untuk paket yang dihosting GH di bawah @mycompany ).

Untuk Docker build, pasang secara terpisah:

base.Dockerfile :

# syntax=docker/dockerfile:1-experimental
## ^ need to enable --mount=type=secret support

ARG BASE_IMAGE
FROM ${BASE_IMAGE} as build

# note that only project-level .npmrc is copied
COPY package.json yarn.lock .npmrc ./

# ~/.npmrc with actual secrets is mounted as "secret" (does not stay in image)
RUN --mount=type=secret,id=npmrc,target=/root/.npmrc,required \
    yarn install --production --frozen-lockfile ...

Perintah build Docker:

DOCKER_BUILDKIT=1 docker build \
        --build-arg BASE_IMAGE=$(BASE_IMAGE) \
        --secret id=npmrc,src="$(HOME)/.npmrc" \
        -t $(IMAGE_NAME):$(IMAGE_TAG) \
        -f base.Dockerfile .

_ (Perhatikan, bahwa saya TIDAK perlu .yarnrc agar ini berfungsi, tetapi saya menggunakan benang 1.17.3 jadi semuanya mungkin berbeda untuk versi lain) _

Saya telah menggali sedikit di sekitar dan tampaknya yarn menggunakan kredensial autentikasi yang salah.

~ / .npmrc

//npm-old.visualon.de/npm/vo-npm/:_password=XXXXXX
//npm-old.visualon.de/npm/vo-npm/:username=kriese
//npm-old.visualon.de/npm/vo-npm/:always-auth=true

//npm-new.visualon.de/:_authToken="XXXXXX"

package.json

{
  "name": "yarn-auth",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "tslib": "^2.0.1",
    "moment": "2.20.1"
  }
}

benang. kunci

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


[email protected]:
  version "2.20.1"
  resolved "https://npm-old.visualon.de/npm/vo-npm/moment/-/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd"
  integrity sha1-1usaRsvMFKKy+UNBEsH/iQfzE/0=

tslib@^2.0.1:
  version "2.0.1"
  resolved "https://npm-new.visualon.de/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e"
  integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==

Saat mencoba memasang benang, kirim token bearer dari npm-new.visualon.de menjadi npm-old.visualon.de . Jadi benang semms hanya membandingkan domain dasar.

Jika ada yang masih menghadapinya, inilah yang berhasil bagi saya.

.npmrc:
always-auth=true
<strong i="6">@orgaccount</strong>:registry=https://npm.pkg.github.com
registry=https://registry.yarnpkg.com

https://npm.pkg.github.com/:_authToken=yyyyjjjjj3333888etc

Tidak yakin apakah ada yang menghadapi masalah serupa, tetapi mungkin ini akan membantu seseorang menghemat sedikit waktu:

Saya menggunakan Azure Artifacts sebagai registri pribadi dan telah menyiapkan file PAT dan .npmrc seperti yang didokumentasikan di sana.
Namun demikian, saya mengalami masalah yang sama bahwa npm install bekerja dengan sempurna, tetapi yarn install mengalami Kesalahan 401 sepanjang waktu.
Setelah sedikit mencoba dan kesalahan Ternyata saya memiliki karakter khusus di URL Registri saya (... @ Lokal / ...) tetapi Azure Artifacts menyelesaikan ini ke representasi Unicode dalam panduan penyiapan mereka. npm menangani ini dengan baik, benang tidak terlalu banyak. Mengatur karakter @ aktual di URL, memecahkan masalah saya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat