ดูเหมือนว่าคุณพยายามติดตั้งแพคเกจ npm ทั่วโลกมากกว่าในเครื่องตามman npm installคำอธิบาย:
-g หรือ --globalอาร์กิวเมนต์จะทำให้ NPM ในการติดตั้งแพคเกจทั่วโลกมากกว่าในประเทศ
โดยทั่วไปเมื่อคุณตั้งค่าโปรเจ็กต์ 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)
IMHO การใช้-g(การใช้sudo) ก็เหมือนhic sunt draconesหากคุณไม่แน่ใจในผลที่ตามมา
สำหรับข้อมูลเพิ่มเติม: