#javascript #node.js #npm
#javascript #node.js #нпм
Вопрос:
Не удается установить пакет node-sass через npm sudo npm i
, я пытался разрешить через sudo npm i -g node-sass --unsafe-perm=true --allow-root
, но это не сработало. Chmod 777 тоже. Я думаю, что есть что-то с разрешениями npm, но я не знаю журнала:
gyp verb build dir attempting to create "build" dir: /home/michael/Desktop/react/node_modules/node-sass/build
gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/home/michael/Desktop/react/node_modules/node-sass/build'
gyp ERR! System Linux 4.15.0-47-generic
gyp ERR! command "/usr/bin/node" "/home/michael/Desktop/react/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /home/michael/Desktop/react/node_modules/node-sass
gyp ERR! node -v v11.14.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
Build failed with error code: 1
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.7 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-sass@4.11.0 postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-sass@4.11.0 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/michael/.npm/_logs/2019-04-13T17_21_20_424Z-debug.log
Ответ №1:
В качестве общей рекомендации никогда не запускайте установку npm с помощью sudo, поскольку она создаст локальные файлы, принадлежащие root, а не вашему пользователю, я думаю, вы должны попробовать следующее :
- Сначала измените владельца папки :
chown -R yourusername:yourusername /home/michael/Desktop/react/
, или, если вы не хотите вводить свое имя пользователя :chown -R $USER:$USER /home/michael/Desktop/react/
- затем запустите :
npm install node-sass
, не используйте sudo
ПРИМЕЧАНИЕ: это нормально при установке локальных пакетов, но для глобальных установок прочитайте обновление ниже
Обновить
Никогда не запускайте sudo npm install
и sudo npm anything
не читайте эту статью, чтобы понять, почему
Хотя изменение разрешений с помощью chown
or chmod
работает нормально и работает, однако это не лучший подход при глобальной установке пакетов, если вы используете Linux или OSX, я бы посоветовал вам прочитать эту статью в документации npm здесь и либо использовать nvm
, либо вручную изменить каталог npm по умолчанию.
Изменение каталога npm по умолчанию
Для этого вам необходимо выполнить следующие действия :
- В командной строке в вашем домашнем каталоге создайте каталог для глобальных установок:
mkdir ~/.npm-global
- Настройте npm для использования нового пути к каталогу:
npm config set prefix '~/.npm-global'
- В предпочитаемом вами текстовом редакторе откройте или создайте
~/.profile
файл [в качестве альтернативы вы можете отредактировать~/.bashrc
~/.zshrc
файл или вместо.profile
, если сочтете нужным] и добавьте эту строку :export PATH=~/.npm-global/bin:$PATH
- В командной строке обновите системные переменные:
source ~/.profile # or source ~/.bashrc, # source ~/.zshrc, depends on where you exported the path
- Чтобы протестировать новую конфигурацию, установите пакет глобально, не используя sudo:
npm install -g jshint
Вы можете установить node-sass глобально :
npm install -g node-sass
Теперь вы не должны получать ошибки разрешений, так как это должно устранить ошибки разрешений EACCES при глобальной установке пакетов.
Предупреждение
LibSass
и node-sass
являются устаревшими. Хотя они будут продолжать получать обновленные версии на неопределенный срок, не планируется добавлять дополнительные функции или совместимость с какими-либо новыми функциями CSS или Sass, проекты, которые все еще используют его, должны перейти на Dart Sass. Вы можете прочитать больше на эту тему здесь
Пожалуйста, используйте вместо этого sass, переход на Dart Sass прост, и оба пакета предоставляют один и тот же JavaScript API для установки dart sass :
npm install sass
Или глобально :
npm install -g sass
Комментарии:
1. нет, в следующий раз просто используйте: npm install node-sass вместо использования: sudo npm install node-sass , команда bash выше просто исправит ошибку EACCESS № 1, вызванную при использовании sudo npm -i node-sass
2. Привет. Я столкнулся с проблемой, я установил глобально node-sass, и когда мне понадобился sass, он просто выдает ошибку, например, для импорта файлов Sass сначала нужно установить node-sass. Следовательно, он должен устанавливать node-sass каждый раз, когда я использую sass? или есть способ предотвратить?
3. Сработало как шарм.
4. Если у вас возникла
illegal group name
проблема, просто сделайтеsudo chown -R <username>: /location
5. Не забудьте поставить пробел после
<username>:
^
Ответ №2:
Я следовал инструкциям в соответствии с ответом @WaLid LamRaoui, поскольку я также использую для запуска npm install с помощью sudo. Казалось, что это помогло с точки зрения смены владельца папки, но я все равно получил ошибку при попытке запуска npm install
. Затем я осознал еще одну проблему, связанную с моей папкой кэша, которая содержит файлы, принадлежащие root, поэтому для тех, у кого также возникла эта проблема после выполнения утвержденного ответа, я просто сделал это:
sudo chown -R 1003:1003 "/home/<username>/.npm"
После этого я побежал npm install
, и все сработало нормально.
Ответ №3:
Ничего не делайте .. просто добавьте --unsafe-perm
к нему
Предоставьте ему небезопасный доступ с правами доступа.
Итак, допустим .. если вы ранее устанавливали библиотеку bcrypt
sudo npm install --save bcrypt
тогда теперь напишите
sudo npm install --unsafe-perm --save bcrypt
И все готово.
Ответ №4:
Я решил эту проблему, выполнив
sudo npm install -g --unsafe-perm node-sass