Что-то пошло не так при загрузке и извлечении файлов проекта Неверное тело ответа ~бла~ expo-шаблон-минимум: EACCES: отказано в разрешении

#node.js #npm #nvm #expo

Вопрос:

Поэтому у меня возникли проблемы с инициализацией проекта expo, все работает, я использую nvm at node v14.16.1 (npm v7.11.2) .

 expo init Doorgy
✔ Choose a template: › minimal               bare and minimal, just the essentials to get you started
✖ Something went wrong in downloading and extracting the project files.
Invalid response body while trying to fetch https://registry.npmjs.org/expo-template-bare-minimum: EACCES: permission denied, open '/home/anthonykung/.expo/template-cache/tmp/0d1e04ab'
FetchError: Invalid response body while trying to fetch https://registry.npmjs.org/expo-template-bare-minimum: EACCES: permission denied, open '/home/anthonykung/.expo/template-cache/tmp/0d1e04ab'
    at /home/anthonykung/.npm-global/lib/node_modules/expo-cli/node_modules/minipass-fetch/lib/body.js:162:15
    at extractTemplateAppAsync (/home/anthonykung/.npm-global/lib/node_modules/expo-cli/src/utils/extractTemplateAppAsync.ts:118:3)
    at extractAndPrepareTemplateAppAsync (/home/anthonykung/.npm-global/lib/node_modules/expo-cli/src/utils/extractTemplateAppAsync.ts:82:3)
    at action (/home/anthonykung/.npm-global/lib/node_modules/expo-cli/src/commands/init.ts:270:19)
    at Command.<anonymous> (/home/anthonykung/.npm-global/lib/node_modules/expo-cli/src/exp.ts:350:7)
 

Он продолжал выдавать мне эту ошибку, что бы я ни делал , я пытаюсь исправить npm , я пытался исправить nvm , используя разные версии, удаляя, возясь с реестрами, почти все, что я могу найти, но он просто продолжал показывать эту досадную ошибку…

Вот очень длинный список того, что я сделал:

 npm install -g npm@latest
npm install -g expo-cli
sudo npm install -g expo-cli
node -v
sudo apt-get update
npm cache verify
sudo expo init Doorgy
npm config set registry https://registry.npmjs.org/
vi ~/.npmrc
npm outdated -g
npm uninstall -g expo-cli
npm install -g expo-cli
expo init Doorgy
~/.npm-global
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
npm config delete prefix
expo init Doorgy
npm config set prefix $NVM_DIR/versions/node/v14.16.1
expo init Doorgy
npm config set prefix '~/.npm-global'
vi ~/.profile 
source ~/.profile
npm i -g expo-cli
expo init Doorgy
nvm use default 
npm i -g expo-cli
expo init Doorgy
npm config delete prefix
npm i -g expo-cli
npm cache verify
sudo npm i -g expo-cli
npm i -g expo-cli
expo init Doorgy
nvm use default 
sudo npm i -g expo-cli
expo init Doorgy
npm cache clean
cd
ls
ls -al
cd dev/DoorgyApp/
expo init Doorgy
npx expo init Doorgy
sudo npm install --unsafe-perm -g expo-cli
expo init Doorgy
npm config set strict-ssl false
expo init Doorgy
npm config set strict-ssl true
npm uninstall expo-cli
npm uninstall -g expo-cli
nvm use default
cp ~/.npmrc ~/.old-npmrc
vi ~/.npmrc
expo init Doorgy
npm uninstall -g expo-cli
sudo npm uninstall -g expo-cli
 

И ни один из них не работает, поэтому я сделал что-то случайное, и это сработало… смотрите ответ ниже

Ответ №1:

Я сделал там все, включая следующее:

 npm cache verify
 
 sudo npm install --unsafe-perm -g expo-cli
 
 npm config set strict-ssl false
 

Но все они не работали, поэтому я решил удалить expo-cli и переустановить. Так что я делаю

 npm uninstall -g expo-cli
 

К моему удивлению, он выжил , и я все еще могу им пользоваться expo init , поэтому я, естественно, добавляю к нему sudo и догадываюсь, что он все еще там. Теперь, очень расстроенный, я пытаюсь удалить все существующие места, начиная с моего домашнего каталога.

 rm -rf /home/anthonykung/.expo/
rm: cannot remove '/home/anthonykung/.expo/template-cache/index-v5/d6/46/41a4d65191fd14edff849b1a5474a12dec9a503a4065b3d9fcfc568a5a3d': Permission denied
rm: cannot remove '/home/anthonykung/.expo/template-cache/index-v5/70/6f/218f4428aaa14899cf226ad3dbf086f32f36d36b64c6e5c3423b10488c8e': Permission denied
rm: cannot remove '/home/anthonykung/.expo/template-cache/content-v2/sha512/6d/28/efad7e78f4322111b65ccfd0dbcf763fc05cf73cc83edd751dc168af2e09437205de510f66ac3bc3289aeee7bd594cd3a8a9661e76fcd2ff263fd8dc4d11': Permission denied
rm: cannot remove '/home/anthonykung/.expo/template-cache/content-v2/sha512/23/26/522f178834febb149d5f9085ab51a65d6c43cac596a90ac4234151594e5248f32c03efb71870cd71e355781bdb0a80907f8bcac53d31ca8c34ec0897167d': Permission denied
rm: cannot remove '/home/anthonykung/.expo/template-cache/tmp': Permission denied
 
 sudo rm -rf /home/anthonykung/.expo/
 

Но тут мне кое-что пришло в голову… Permission denied это похоже на ошибку, о которой кричит экспо! Так я и сделал expo init снова с большой надеждой и…

 ✔ Choose a template: › minimal               bare and minimal, just the essentials to get you started
✔ Downloaded and extracted project files.
📦 Using npm to install packages.
✔ Installed JavaScript dependencies.
✔ Skipped installing CocoaPods because operating system is not on macOS.

✅ Your project is ready!

To run your project, navigate to the directory and run one of the following npm commands.

- cd Doorgy
- npm run android
- npm run ios # you need to use macOS to build the iOS project - use managed workflow if you need to do iOS development without a Mac
- npm run web

💡 You can also open up the projects in the ios and android directories with their respective IDEs.
🚀 expo-updates (​https://github.com/expo/expo/blob/master/packages/expo-updates/README.md​) has been installed in your project. Before you do a release build, you'll need to configure a few values in Expo.plist and AndroidManifest.xml in order for updates to work.
 

ЭТО РАБОТАЕТ!!! СВЯТАЯ КОРОВА, ЭТО РАБОТАЕТ!!!

Прежде чем удалить его, я проверяю разрешение и владельца ~/.expo каталога, и он показывает правильное разрешение с правильным владельцем… Мне никогда не приходило в голову, что что-то внутри было сломано, и удаление их работает. Я уверен, что это просто редкая вещь, которая почти никогда не случалась ни с кем другим (я никогда не сталкивался с этим до сих пор, так что…), но если это случится с кем-то, я надеюсь, что это поможет 🙌

Ответ №2:

Вместо того , чтобы использовать Default опцию How would you like to start «выбрать Template from expo/examples: https://github.com/expo/examples «, это сработало для меня