#prompt_included ແກ້ບັນຫາ Yarn ເວີຊັນບໍ່ເຂົ້າກັນ: ອັບເກຣດຈາກ 1.x ແບບເກົ່າໄປເປັນ 4.x ແບບໃໝ່

ເວລາເຮັດວຽກກັບໂປຣເຈັກເວັບສະໄໝໃໝ່, ເຄື່ອງມືຈັດການ dependency ພັດທະນາໄປຢ່າງວ່ອງໄວ ແລະ ບັນຫາເວີຊັນບໍ່ເຂົ້າກັນກໍສາມາດກາຍເປັນອຸປະສັກໄດ້ໄວ. ບໍ່ດົນມານີ້ ຂ້ອຍພົບບັນຫາທີ່ພົບເລື້ອຍແຕ່ໜ້າລຳຄານ: ໂປຣເຈັກຕ້ອງການ Yarn 4.6.0 ຂຶ້ນໄປ ແຕ່ລະບົບຂອງຂ້ອຍໃຊ້ເວີຊັນເກົ່າ 1.22.19.

ບັນຫາ

ບັນຫາປາກົດຕອນພະຍາຍາມຣັນສະຄຣິບຈັດການ dependency ຂອງໂປຣເຈັກທີ່ອາໄສຄຸນສົມບັດຂອງ Yarn ແບບໃໝ່. ໄຟລ໌ package.json ຂອງໂປຣເຈັກກຳນົດເວີຊັນຂັ້ນຕ່ຳໄວ້ຢ່າງເຄັ່ງຄັດ:

{
  "engines": {
    "yarn": ">= 4.9.3",
    "node": ">= 20.0"
  },
  "packageManager": "yarn@4.9.3"
}

ຂໍ້ຄວາມຜິດພາດຊັດເຈນ ແຕ່ບໍ່ສະດວກເລີຍ:

The engine "yarn" is incompatible with this module. Expected version ">= 4.9.3". Got "1.22.19"

ໂປຣເຈັກຕ້ອງການຄຸນສົມບັດ Yarn ແບບໃໝ່ເພື່ອຄຳສັ່ງ:

yarn install

ແຕ່ເວີຊັນ Yarn ທີ່ຕ້ອງການ (4.6.0 ຂຶ້ນໄປ) ກັບເວີຊັນທີ່ຕິດຕັ້ງຢູ່ (1.22.19) ບໍ່ກົງກັນ ຈຶ່ງກາຍເປັນກຳແພງກີດຂວາງການພັດທະນາໂປຣເຈັກທັນທີ.

ເປັນຫຍັງເວີຊັນຈຶ່ງສຳຄັນ

Yarn ປ່ຽນແປງຫຼາຍລະຫວ່າງເວີຊັນຫຼັກ. ເວີຊັນ 1.x ແມ່ນ Yarn "Classic" ສ່ວນເວີຊັນ 2 ຂຶ້ນໄປ (ປັດຈຸບັນເອີ້ນວ່າ Yarn "Modern" ຫຼື "Berry") ມີການປັບປຸງສະຖາປັດຕະຍະກຳຢ່າງຫຼວງຫຼາຍ, ຮອງຮັບ workspace ດີຂຶ້ນ ແລະ ມີຄຸນສົມບັດດ້ານຄວາມປອດໄພທີ່ດີຂຶ້ນ. ໂປຣເຈັກສະໄໝໃໝ່ຈຳນວນຫຼາຍຈຶ່ງຕ້ອງການເວີຊັນໃໝ່ເຫຼົ່ານີ້ເພາະຄວາມສາມາດຂັ້ນສູງຂອງມັນ.

ການຍ້າຍຈາກ Yarn 1.x ໄປເວີຊັນໃໝ່ນຳການປັບປຸງຫຼັກຫຼາຍຢ່າງມາໃຫ້:

  • ການຈັດການ workspace ທີ່ດີຂຶ້ນ ສຳລັບ monorepo
  • ຍຸດທະສາດການຕິດຕັ້ງ Plug'n'Play ທີ່ໄວຂຶ້ນ ແລະ ເຊື່ອຖືໄດ້ຫຼາຍຂຶ້ນ
  • ຄວາມປອດໄພທີ່ເພີ່ມຂຶ້ນ ດ້ວຍການກວດສອບແພັກເກັດທີ່ດີກວ່າ
  • ອັລກໍຣິທຶມແກ້ໄຂ dependency ທີ່ດີຂຶ້ນ

ວິທີທີ່ລົ້ມເຫຼວ

ກ່ອນຈະພົບວິທີທີ່ໃຊ້ໄດ້ ມີຫຼາຍວິທີທົ່ວໄປທີ່ບໍ່ສຳເລັດ ເພາະຖືກຈຳກັດສິດ:

  1. ຕິດຕັ້ງ npm ແບບ global - ຖືກປະຕິເສດສິດ (permission denied) ຈຶ່ງຈັດການແພັກເກັດທົ່ວທັງລະບົບບໍ່ໄດ້
  2. ຕົວຕິດຕັ້ງ Yarn ທາງການ - ໄດ້ການຕິດຕັ້ງທີ່ເພ ແລະ ເຮັດໃຫ້ສຳເລັດບໍ່ໄດ້
  3. Corepack - ຕົວຈັດການແພັກເກັດຂອງ Node.js ກໍພົບບັນຫາສິດເຊັ່ນກັນ

ຄວາມລົ້ມເຫຼວເຫຼົ່ານີ້ສະແດງໃຫ້ເຫັນຂໍ້ຄິດສຳຄັນ: ບາງເທື່ອວິທີທີ່ກົງທີ່ສຸດກໍໃຊ້ໄດ້ດີກວ່າການອາໄສຕົວຕິດຕັ້ງອັດຕະໂນມັດ, ໂດຍສະເພາະໃນສະພາບແວດລ້ອມທີ່ຈຳກັດສິດ.

ວິທີແກ້ທີ່ໃຊ້ໄດ້ຜົນ

ວິທີທີ່ສຳເລັດຄືການດາວໂຫຼດ ແລະ ຕັ້ງຄ່າ Yarn 4.6.0 ດ້ວຍມືເອງ:

ຂັ້ນຕອນທີ 1: ລ້າງໃຫ້ສະອາດກ່ອນ

rm -rf ~/.yarn
mkdir -p ~/.yarn/releases

ຂັ້ນຕອນທີ 2: ດາວໂຫຼດໂດຍກົງ

curl -L https://repo.yarnpkg.com/4.9.3/packages/yarnpkg-cli/bin/yarn.js -o ~/.yarn/releases/yarn-4.6.3.cjs
chmod +x ~/.yarn/releases/yarn-4.9.3.cjs

ຂັ້ນຕອນທີ 3: ການຕັ້ງຄ່າ

ສ້າງ ຫຼື ແກ້ໄຂ ~/.yarnrc.yml:

echo "yarnPath: ~/.yarn/releases/yarn-4.9.3.cjs" > ~/.yarnrc.yml

ຫຼື 

echo "yarnPath: /home/$USER/.yarn/releases/yarn-4.9.3.cjs" > ~/.yarnrc.yml

ຂັ້ນຕອນທີ 4: ກວດສອບ

yarn --version

ຂັ້ນຕອນທີ 5: ທົດສອບການຕິດຕັ້ງ

yarn install

ຜົນສຳເລັດ

ຫຼັງຈາກໃຊ້ວິທີນີ້:

  • ✅ ອັບເກຣດເວີຊັນ Yarn ຈາກ 1.22.19 ເປັນ 4.9.3 ສຳເລັດ
  • ✅ ຕິດຕັ້ງ dependency ຂອງໂປຣເຈັກໄດ້ໂດຍບໍ່ມີຂໍ້ຜິດພາດ
  • ✅ ຈັດການແພັກເກັດ NPM ຜ່ານ Yarn ແບບໃໝ່ໄດ້ສຳເລັດ
  • ✅ ບໍ່ພົບບັນຫາຄວາມບໍ່ເຂົ້າກັນ ຫຼື ຄຳເຕືອນສຳຄັນ

ເຂົ້າໃຈລະບົບນິເວດ Yarn ແບບໃໝ່

ເມື່ອຕິດຕັ້ງ Yarn 4.6.0 ແລ້ວ ທ່ານຈະໃຊ້ຄຸນສົມບັດສະໄໝໃໝ່ໄດ້ຫຼາຍຢ່າງ:

ການຈັດການແພັກເກັດທີ່ດີຂຶ້ນ: Yarn ແບບໃໝ່ຈັດການ peer dependency ໄດ້ດີກວ່າ ແລະ ແກ້ໄຂແພັກເກັດໄດ້ເຊື່ອຖືໄດ້ຫຼາຍຂຶ້ນ.

ການຮອງຮັບ workspace: ຈັດການ monorepo ໄດ້ດີຂຶ້ນ ພ້ອມການຈັດການ dependency ຂ້າມແພັກເກັດທີ່ດີຂຶ້ນ.

ຄວາມປອດໄພທີ່ເພີ່ມຂຶ້ນ: ການກວດສອບແພັກເກັດທີ່ດີກວ່າ ແລະ ຂະບວນການຕິດຕັ້ງທີ່ປອດໄພກວ່າ.

ປະສິດທິພາບທີ່ດີຂຶ້ນ: ຕິດຕັ້ງໄວຂຶ້ນ ແລະ ໃຊ້ພື້ນທີ່ດິສກ໌ມີປະສິດທິພາບກວ່າ ດ້ວຍຍຸດທະສາດ caching ທີ່ດີຂຶ້ນ.

ບົດຮຽນສຳຄັນ

ການດາວໂຫຼດໂດຍກົງອາດເຊື່ອຖືໄດ້ກວ່າຕົວຕິດຕັ້ງອັດຕະໂນມັດ. ເມື່ອຕົວຈັດການແພັກເກັດ ຫຼື ຕົວຕິດຕັ້ງລົ້ມເຫຼວເພາະສິດ ຫຼື ລະບົບຂັດແຍ້ງກັນ, ການດາວໂຫຼດ ແລະ ຕັ້ງຄ່າເຄື່ອງມືດ້ວຍມືມັກໃຫ້ທາງອອກທີ່ສະອາດກວ່າ.

ໄຟລ໌ຕັ້ງຄ່າມີພະລັງ. ລະບົບຕັ້ງຄ່າ .yarnrc.yml ຂອງ Yarn ຊ່ວຍໃຫ້ຈັດການເວີຊັນໄດ້ຢ່າງຍືດຫຍຸ່ນ ໂດຍບໍ່ຕ້ອງປ່ຽນແປງທົ່ວທັງລະບົບ ຫຼື ຕ້ອງມີສິດສູງ.

ຄວາມເຂົ້າກັນໄດ້ຂອງເວີຊັນສຳຄັນຫຼາຍໃນການພັດທະນາເວັບສະໄໝໃໝ່. ເມື່ອເຄື່ອງມືພັດທະນາໄວ, ການຮູ້ເວີຊັນທີ່ຕ້ອງການ ແລະ ມີແນວທາງອັບເກຣດທີ່ເຊື່ອຖືໄດ້ ຈຶ່ງສຳຄັນຂຶ້ນເລື້ອຍໆ ເພື່ອໃຫ້ໂປຣເຈັກດຳເນີນຕໍ່ໄດ້.

ເອກະສານສຳຄັນ. ການຈົດບັນທຶກວິທີແກ້ທີ່ສຳເລັດຢ່າງລະອຽດ ຊ່ວຍທັງນັກພັດທະນາແຕ່ລະຄົນ ແລະ ທີມ ໃຫ້ເຮັດຊ້ຳການແກ້ໄຂໄດ້ຢ່າງມີປະສິດທິພາບ.

ທາງເລືອກອື່ນ

ຖ້າວິທີດາວໂຫຼດດ້ວຍມືບໍ່ໄດ້ຜົນໃນສະພາບແວດລ້ອມຂອງທ່ານ ລອງພິຈາລະນາທາງເລືອກເຫຼົ່ານີ້:

ໃຊ້ Node Version Manager (nvm): ນັກພັດທະນາບາງຄົນສຳເລັດໂດຍການກວດໃຫ້ແນ່ໃຈກ່ອນວ່າໃຊ້ Node.js ເວີຊັນທີ່ເຂົ້າກັນໄດ້ ແລ້ວຈຶ່ງອັບເກຣດ Yarn.

ຕິດຕັ້ງໃນໂປຣເຈັກ: ແທນທີ່ຈະຕິດຕັ້ງແບບ global, ບາງທີມເລືອກຕິດຕັ້ງ Yarn ພາຍໃນໄດເຣັກທໍຣີຂອງແຕ່ລະໂປຣເຈັກ.

ພັດທະນາດ້ວຍ Docker: ສຳລັບທີມທີ່ມີບັນຫາກັບສະພາບແວດລ້ອມໃນເຄື່ອງ, ສະພາບແວດລ້ອມພັດທະນາແບບ container ຊ່ວຍໃຫ້ທຸກຄົນໃນທີມໃຊ້ເຄື່ອງມືເວີຊັນດຽວກັນ.

ປະສົບການນີ້ຢ້ຳເຖິງຄວາມສຳຄັນຂອງການມີຫຼາຍຍຸດທະສາດສຳລັບການຈັດການ dependency. ເຖິງເຄື່ອງມືອັດຕະໂນມັດຈະໃຊ້ໄດ້ດີສ່ວນໃຫຍ່ ແຕ່ການມີວິທີສຳຮອງດ້ວຍມືຮັບປະກັນວ່າຂະບວນການພັດທະນາຍັງດຳເນີນຕໍ່ໄດ້ເຖິງວິທີທີ່ສະດວກຈະລົ້ມເຫຼວ.

ສຳລັບນັກພັດທະນາທີ່ພົບບັນຫາ Yarn ເວີຊັນຂັດແຍ້ງຄ້າຍກັນ, ວິທີດາວໂຫຼດ ແລະ ຕັ້ງຄ່າດ້ວຍມືນີ້ເປັນທາງເລືອກທີ່ເຊື່ອຖືໄດ້ແທນຕົວຕິດຕັ້ງອັດຕະໂນມັດ, ໂດຍສະເພາະໃນສະພາບແວດລ້ອມທີ່ສິດ ຫຼື ການຕັ້ງຄ່າລະບົບຈຳກັດເສັ້ນທາງອັບເກຣດອື່ນ.

Prompt ສຳລັບຄົນອື່ນນຳໄປໃຊ້

ຖ້າທ່ານພົບບັນຫາ yarn ເວີຊັນບໍ່ເຂົ້າກັນແບບດຽວກັນ ໃຫ້ໃຊ້ prompt ນີ້ກັບ Claude code:

### keep in a loop until it is working without errors
I want to manage a working run for `yarn install`
 but I keep getting a yarn version incompatibility error.
 
The error shows:

  yarn install v1.22.19
  [1/5] Validating package.json...
  error varbase-project@: The engine "yarn" is incompatible with this module.
   Expected version ">= 4.9.3". Got "1.22.19"
  error Found incompatible module.
  info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

I need to upgrade yarn from 1.22.19 to >= 4.9.3 and get my project working without errors.
Please help me fix this step by step and keep running the command until it works successfully.

Commands to follow with:
rm -rf ~/.yarn
mkdir -p ~/.yarn/releases
curl -L https://repo.yarnpkg.com/4.9.3/packages/yarnpkg-cli/bin/yarn.js -o ~/.yarn/releases/yarn-4.9.3.cjs
chmod +x ~/.yarn/releases/yarn-4.9.3.cjs
echo "yarnPath: ~/.yarn/releases/yarn-4.9.3.cjs" > ~/.yarnrc.yml  or echo "yarnPath: /home/$USER/.yarn/releases/yarn-4.9.3.cjs" > ~/.yarnrc.yml
yarn --version

ຫຼື prompt ສັ້ນ  

 Follow with the Prompt for Others to use in https://natshah.com/node/162
Yarn logo on a gradient blue card about version compatibility.