Вопрос по node.js, express – нпм не установит экспресс?

46

В настоящее время у меня установлен node.js версии 0.8.8 и npm 1.1.59.

Всякий раз, когда я бегу:

$ npm install -g express

Я получаю это взамен:

npm ERR! Error: EACCES, open '/Users/devinandrews/.npm/64a534c1-express.lock'
npm ERR!  { [Error: EACCES, open '/Users/devinandrews/.npm/64a534c1-express.lock']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/Users/devinandrews/.npm/64a534c1-express.lock' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 12.1.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "express"
npm ERR! cwd /Users/devinandrews
npm ERR! node -v v0.8.8
npm ERR! npm -v 1.1.59
npm ERR! path /Users/devinandrews/.npm/64a534c1-express.lock
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/devinandrews/.npm/64a534c1-express.lock'
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/devinandrews/npm-debug.log
npm ERR! not ok code 0

Я сейчас выдергиваю волосы, пытаясь понять это.

Обновить:

Я побежал

$ npm -g ls

чтобы увидеть, что npm установил глобально:

/usr/local/lib
├─┬ [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│   └── [email protected]
└─┬ [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ └── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ └── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ └─┬ [email protected]
  │   └── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ └── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├── [email protected]
  └── [email protected]

но если я бегу:

$ npm ls

он возвращается пустым?

в итоге он говорит мне, что /Users/devinandrews/.npm/64a534c1-express.lock не существует. Я предполагаю, что это проблема? Devin
Вы запускаете это как администратор? Проверьте файл блокировки, о котором идет речь, и убедитесь, что он не принадлежит другому пользователю, отличному от того, который вы запускаете как & # x2014; Я не могу придумать причину, по которой это может быть, но ошибки указывают, что у вас нет прав на открытие этого файла, который должен принадлежать вашему пользователю. lanzz
Я искал в поиске. (Да, OS X 10,8). Я только что запустил команду open -a Finder / usr / local / bin и, к моему удивлению, нашел там файл экспресс? (я пытался сделать это с помощью различных методов googled весь день, поэтому я целый день помещал много команд, пытаясь заставить это работать) Я только сейчас поставил новую установку узла и npm, и я пытаюсь сделать этот. (под этим я подразумеваю попытку установить экспресс) Devin
Вы ищете это.npm папка в оболочке или в Finder? Вы можете иметь точечные имена, скрытые в Finder (так как это по умолчанию); обратите внимание, что я предполагаю, что вы используете OSX, судя по расположению вашего домашнего каталога. lanzz
я даже не вижу папку .npm в моем каталоге users / devinandrews. я мог бы установить его, выполнив команду sudo npm install -g express, но рекомендуется не делать этого. Devin

Ваш Ответ

8   ответов
6

бежатьnpm cache clean  и попробуйте установить его снова

Я получаю еще одну ошибку, если я делаю это. Слишком большой, чтобы положить сюда .. Devin
Nice1 спасибо. Заблудился во всех этих других вариантах
0

Я столкнулся с той же проблемой.

Я обновил пакет nodejs, перейдя на веб-сайт загрузки узла js, и тогда я не столкнулся с этой проблемой.

Спасибо Удачи

0

В моем случае вместо каталога ~ / .npm, принадлежащего root, это был ~ / tmp, который я не думал проверять, пока одно из сообщений об ошибках не привело меня к окончательному поиску. Процедура исправления довольно проста, поскольку это каталог tmp, мы можем просто удалить его и начать заново с того, который принадлежит вам.

sudo rmdir ~/tmp
mkdir ~/tmp
5

Я получил ту же проблему, эта проблема вызвана тем, что каталог .npm в вашем домашнем каталоге был создан с правами суперпользователя.

использовать:

$sudo npm install -g express
141

У меня была такая же проблема, иnpm cache clear не исправить это. Эта проблема вызвана тем, что.npm каталог в вашем домашнем каталоге был создан с правами суперпользователя. Скорее всего, первая команда npm, которую вы выполнили, былаsudo npm -g и теперь вы пытаетесьnpm install в локальном каталоге.

Решать:

  • sudo chown -R yourusername ~/.npm
  • This may not be necessary but I also had to rmdir ~/tmp

npm install из package.json должен работать после этого.

это проблема запуститьsudo npm install -g express?
@ConnorLeech нет, но когда-нибудь вы просто захотитеnpm install без судо. Я предполагаю, что именно из этого источника поступает большая часть трафика.
Это не сработало для меня. Бегls -la дома (~) уже показывает мое имя пользователя Mac OS X как владельца моего.npm файл.
Я использую OSX. Каким будет мое имя пользователя для chown? .npm в настоящее время установлен в моей папке Users / [мое имя здесь]. ;; также извините за возвращение почти 2 месяца спустя, ха-ха. Devin
Ах, это потому, что точечная запись больше не используется. и я использовал $ USER, так как понятия не имел, каким должно быть мое имя пользователя. В любом случае, спасибо! Devin
0

Вы пробовали sudo npm -g установить экспресс?

У меня есть, и это работает, однако мне нужно установить его локально в папке проекта моего приложения, чтобы использовать его в моем проекте. Devin
0

Решение:

1 - выберите вашему пользователю папку .npm:

sudo chown -R Webmaste /Users/webmaste/.npm/

2 - В вашей тестовой папке или в вашей папке:

sudo npm install -g [email protected]

3 - вызвать экспресс из вашего фактического местоположения:

/usr/local/share/npm/bin/express

4 -

sudo cd . && npm install

5 - наконец:

node app

последнее сообщение в консоли должно выглядеть так:

Express server listening on port 3000 in development mode
sudo cd не имеет никакого смысла вообще. CD является встроенным, так что даже если sudo может запустить его, он будет в под-оболочке
Прежде всего, спасибо. Во-вторых, если это имеет значение, я в OSX. & Амп; не слишком знаком с Чоуном. Какое имя пользователя я должен использовать при запуске chown? Devin
0

Если вы не видите ничего плохого в использовании sudonpm install -g package_name, И есть проблема с вводом пароля, вы всегда можете добавить себя в файлы sudoers или в ту же группу, котораяnpm исполняемый файл принадлежит.

И так, чтобы добавить себя в sudoers для npm edit/etc/sudoers добавив что-то вроде этого в конец файла:

your_username  localhost=/usr/local/bin/npm

Вот это пошаговое руководство о том, как этого добиться, если вам нужно больше деталей.

Похожие вопросы