Wygląda na to, że próbowałeś zainstalować pakiet npm globalnie, a nie lokalnie, jak to man npm install
opisuje:
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.json
pliku:
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-generator
z -g
opcją, aby skrypt był express-cli.js
dostępny w ścieżce systemowej, ale możesz również użyć lokalnie zainstalowanego skryptu, który znajduje się w node_modules
projekcie 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: