Wygląda na to, że próbowałeś zainstalować pakiet npm globalnie, a nie lokalnie, jak to man npm installopisuje:
Argument -g lub --global spowoduje, że npm zainstaluje pakiet globalnie, a nie lokalnie.
Zasadniczo, gdy konfigurujesz projekt npm (wśród wielu innych, które możesz mieć), nie jest dobrym pomysłem instalowanie pakietów w modułach globalnych Node.js (/ usr / local / lib / node_modules), jako dziennik debugowania zasugerował.
Zamiast używać -g, użyj --save, który automatycznie zapisze pakiet jako zależność dla twojego package.jsonpliku:
Lubię to:
$ 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"
}
}
Ale jak wspomniano w innych odpowiedziach, jeśli zamierzasz użyć -g, musisz użyć sudo( jeśli użytkownik ma uprawnienia sudo: patrz / etc / sudoers ) podczas wykonywania npm install express-generator -g, ale w rzeczywistości nie jest to dobry pomysł, ponieważ może to powodować problemy z uprawnieniami.
OGŁOSZENIE
Istnieją instrukcje dotyczące instalowania express-generatorz -gopcją, aby skrypt był express-cli.jsdostępny w ścieżce systemowej, ale możesz również użyć lokalnie zainstalowanego skryptu, który znajduje się w node_modulesprojekcie ifm np:
$ ./node_modules/express-generator/bin/express-cli.js --view=pug myapp
Jeśli pojawi się komunikat taki jak / usr / bin / env: 'node': nie pojawia się taki plik lub katalog , zainstaluj nodejs-legacy(Debian / Ubuntu)
IMHO, używanie -g(także używanie sudo) jest jak hic sunt dracones , jeśli nie jesteś pewien konsekwencji.
W celu uzyskania dalszych informacji: