Как я могу установить `bcrypt-as-обещано` из старой базы кода на мой ящик с Ubuntu? - PullRequest
0 голосов
/ 27 ноября 2018

Я работаю со старой базой кода из старого проекта, который использует bcrypt-as-promised (до bcrypt разрешалось использование обещаний).Когда я пытаюсь и npm install package.json, я получаю эту ошибку для этого пакета:

npm WARN устарел bcrypt-as-promised@1.1.0: модуль bcrypt теперь поддерживает обещания, этомодуль больше не нужен

npm WARN устарела bcrypt@0.8.7: bcrypt = v2.0.0 для улучшенной поддержки новых хэшей bcrypt

И затем перестанет работать (я могу вставить больше сообщения об ошибке, если необходимо).

I 'Я немного сбит с толку относительно того, как я могу получить этот устаревший пакет для установки.Я думал об изменении кодовой базы, чтобы использовать только bcrypt (с поддержкой теперь родных обещаний), но я боюсь погрузиться в гнездо пчелы и сломать приложение.Сначала мне было интересно, есть ли способ установить этот пакет для старой базы кода, чтобы он заработал.

Есть мысли?Спасибо за ваше время и за пониманиепопробуйте и sudo npm install:

> bcrypt@0.8.7 install /var/www/mean_hike/node_modules/bcrypt
> node-gyp rebuild

gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir 
'/var/www/mean_hike/node_modules/bcrypt/build'
gyp ERR! System Linux 4.4.0-1072-aws
gyp ERR! command "/usr/local/bin/node" 
"/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /var/www/mean_hike/node_modules/bcrypt
gyp ERR! node -v v11.2.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! bcrypt@0.8.7 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the bcrypt@0.8.7 install 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/ubuntu/.npm/_logs/2018-11-27T10_46_27_925Z-debug.log

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Я нашел решение моей проблемы - использовать yarn для импорта всех моих зависимостей, а не npm, а также поменять bcrypt-as-promised на bcrypt (который теперь включает в себя обещания без необходимости изменения синтаксиса).

  1. Я отказался от bcrypt-as-promised и заменил его на bcrypt в моем package.json файле.

  2. Затем я изменил любой экземпляр require('bcrypt-as-promised') на require('bcrypt') (синтаксис для использования bcrypt остался прежним, нужно изменить только строки импорта зависимостей).

  3. Без использования yarn, даже после изменения разрешений для моей папки, я все еще обращался к разрешениям "EACCES: в праве отказано" , с ошибкой bcrypt.Мои версии npm и node казались хорошими.Удостоверился, что все окно Ubuntu было обновлено.

  4. Именно тогда я получил предложение от мудрого друга, чтобы попытаться использовать yarn, чтобы получить зависимости вместо этого.Я запустил yarn import, который читает файл package.json и создает файл yarn.lock.Затем я установил yarn на мою машину с Ubuntu (sudo npm install yarn -g) и запустил yarn install, и bcrypt успешно установили!

Обновление январь 2019 г.- Улучшенное решение

Похоже, если зависимости npm были изначально установлены с использованием sudo, при попытке установки bcrypt могут возникнуть проблемы с разрешениями.Мое улучшенное решение заключалось в следующем:

  • Обнулить папку ./node_modules с помощью sudo rm -r ./node_modules
  • Установить свежие пакеты npm (без использования sudo).
  • Послеэто, я смог npm i --save bcrypt успешно установить пакет.

Вот ссылка из GitHub, которая помогла мне найти решение и выдержку:

@ Mayocampoразрешение отклонено, mkdir '/ home / someroute / node_modules / bcrypt / build'

Кажется, вы запускаете rpm от имени пользователя root, иначе ваша учетная запись не может mkdir в / home / someroute / node_modules / проверить каталог с помощью ls -l /home/someroute/node_modules/ Я уверен, что владельцем верхнего каталога является root.или ваша учетная запись не может иметь разрешения.

Я думаю, что доступны две опции.

  1. sudo rm -r ./node_modules И снова установите пакет через npm, но без использования sudo.
  2. Измените mod ./node_module на доступный и исполняемый.Сначала я решил, и это исправлено

Источник: juicycool92 @ GitHub

0 голосов
/ 27 ноября 2018

Старые версии bcrypt могут быть довольно сложны в установке, и похоже, что вы столкнулись с проблемой классических разрешений в npm.Вы можете попробовать некоторые из советов, перечисленных в официальной документации, здесь: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

… но в то же время вот несколько вещей, которые нужно попробовать:

  1. Попытка глобальной установкисначала из node-gyp, с или без sudo: npm install node-gyp -g
  2. Если это работает, , то попробуйте установить bcrypt (снова, глобально).
  3. Если вы 'По-прежнему возникают проблемы с разрешениями, вам, возможно, потребуется выяснить, кто является владельцем вашего каталога node_modules: sudo chown -r XXX /usr/lib/node_modules/ (если, конечно, на вашем компьютере находится каталог глобальных модулей).
...