Похоже, вы пытались установить пакет npm глобально, а не локально, как man npm install
описано ниже:
-G или --global аргумент заставит НПМ установить пакет глобально , а не локально.
Обычно, когда вы настраиваете проект npm (среди многих других, которые у вас могут быть), не стоит устанавливать пакеты в глобальные модули Node.js (/ usr / local / lib / node_modules), как ваш журнал отладки. предложил.
Вместо использования -g
используйте --save
, что автоматически сохранит пакет как зависимость для вашегоpackage.json
файла:
Как это:
$ npm install express-generator --save
$ cat package.json
{
"name": "first_app_generator",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "ivanleoncz",
"license": "MIT",
"dependencies": {
"express-generator": "^4.16.0"
}
}
Но, как упоминалось в других ответах, если вы собираетесь использовать -g
, вы должны использовать sudo
( если ваш пользователь имеет привилегии sudo: см. / Etc / sudoers ) при выполненииnpm install express-generator -g
, но на самом деле, это не очень хорошая идея, возможно, вызывает проблемы с разрешениями.
УВЕДОМЛЕНИЕ
Существуют инструкции по установке express-generator
с -g
параметром, чтобы скрипт был express-cli.js
доступен по системному пути, но вы также можете использовать локально установленный скрипт, расположенный в проекте node_modules
if ваш npm:
$ ./node_modules/express-generator/bin/express-cli.js --view=pug myapp
Если сообщение типа / usr / bin / env: 'node': такой файл или каталог не отображаются, установите nodejs-legacy
(Debian / Ubuntu)
ИМХО, использование -g
(также использование sudo
) похоже на hic sunt dracones , если вы не уверены в последствиях.
Для дополнительной информации: