node.js: ไม่พบโมดูล 'request'


92

ฉันติดตั้งโมดูลคำขอและได้รับข้อผิดพลาด:

module.js:340
    throw err;
          ^
Error: Cannot find module 'request'

ฉันอ่านโพสต์ทั้งหมดเกี่ยวกับข้อผิดพลาดนี้แล้วและเข้าใจว่านี่เป็นเพราะไม่พบคำขอโมดูลทั่วโลก แต่ฉันได้ลอง 2 คำแนะนำแล้ว

คำขอติดตั้ง npm -g

สิ่งนี้ควรติดตั้งใน / usr / loca / bin หรือไม่ เพราะฉันไม่เห็นที่นั่น

และ

ลิงก์ sudo npm

/ usr / local / lib / node_modules / request -> / Users / soulsonic / dev / sandbox / node_test / request

ฉันรีสตาร์ทเทอร์มินัลหลังจากแต่ละคำสั่ง แต่ได้รับข้อผิดพลาดไม่พบโมดูล

อัพเดต

ต้องมีข้อขัดแย้งบางอย่างในไดเร็กทอรีเริ่มต้นของฉันเนื่องจาก "คำขอติดตั้ง npm" ไม่ได้เพิ่ม "คำขอ" ภายใต้ node_modules (มีอีก 10 รายการในนั้น) .. หลังจากเปลี่ยนไปใช้ไดเร็กทอรีใหม่มันก็ใช้งานได้

ถ้าฉันรันด้วยสวิตช์ -g ฉันเห็นมันติดตั้ง bing ไปที่ / usr / local / lib / node_modules / request

ดูเหมือนว่าฉันต้องการอัปเดตโปรไฟล์ของฉันเพื่อให้เพิ่มเส้นทางด้านบนโดยอัตโนมัติ

คำตอบ:


171

ไปที่ไดเรกทอรีของโครงการของคุณ

mkdir TestProject
cd TestProject

ทำให้ไดเร็กทอรีนี้เป็นรูทของโปรเจ็กต์ของคุณ (ซึ่งจะสร้างpackage.jsonไฟล์เริ่มต้น)

npm init --yes

ติดตั้งโมดูล npm ที่ต้องการและบันทึกเป็นการพึ่งพาโครงการ (จะปรากฏในpackage.json)

npm install request --save

สร้างtest.jsไฟล์ในไดเร็กทอรีโครงการด้วยรหัสจากตัวอย่างแพ็คเกจ

var request = require('request');
request('http://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body); // Print the google web page.
  }
});

ไดเรกทอรีโครงการของคุณควรมีลักษณะดังนี้

TestProject/
- node_modules/
- package.json
- test.js

ตอนนี้เพียงแค่เรียกใช้โหนดภายในไดเรกทอรีโครงการของคุณ

node test.js

1
ใช่นั่นคือตัวอย่างที่ฉันทำตาม และฉันรันโปรแกรมติดตั้ง npm 10 ครั้งแล้ว .. ในโปรเจ็กต์ทดสอบของฉันและใช้แฟล็ก -g ฉันเห็น node_modules ในไดเร็กทอรีทดสอบของฉัน แต่คำขอไม่อยู่ในนั้น .. มันยังคงให้ข้อผิดพลาดนั้นแก่ฉัน ..
Sonic Soul

เพราะแม้ว่าฉันจะมีความขัดแย้งแปลก ๆ แต่นี่เป็นขั้นตอนที่ถูกต้องในการปฏิบัติตาม มันใช้งานได้เมื่อฉันทำอีกครั้งในไดเรกทอรีใหม่ ฉันได้เพิ่มการอัปเดตเกี่ยวกับสิ่งที่เกิดขึ้นกับฉันซึ่งอาจจะหายากสำหรับคนอื่น
Sonic Soul

32

คุณก็ควรติดตั้งrequest ในประเทศที่อยู่ในโครงการของคุณ

เพียงแค่cdไปยังโฟลเดอร์ที่มีไฟล์ js ของคุณและเรียกใช้

npm install request

หลังจาก "คำขอติดตั้ง npm" ฉันคัดลอก app.js ของฉันไปยังโฟลเดอร์คำขอและลองเรียกใช้จากที่นั่นด้วยผลลัพธ์เดียวกัน และฉันจะต้องใช้มันจากโครงการมากกว่าหนึ่งโครงการ
Sonic Soul

@SonicSoul: คุณเข้าใจผิดว่าแพ็คเกจโหนดทำงานอย่างไร require('request')มองเข้าไป./node_modules/requestและนั่นคือสิ่งที่npm installทำให้มัน คุณควรเรียกใช้npm installจากไดเรกทอรีรากของแต่ละแอปและคุณไม่ควรสัมผัสnode_modulesโฟลเดอร์ด้วยตัวเอง
SLaks

ก่อนที่จะใช้คุณควรใช้npm install request npm initทำตามคำแนะนำซึ่งจะสร้างpackage.jsonในโฟลเดอร์โครงการของคุณ จากนั้นเรียกใช้npm install -S requestซึ่งจะติดตั้งโมดูลคำขอลงในโฟลเดอร์ node_modules รวมทั้งเพิ่มคำขอในไฟล์ package.json ของคุณ
โนอาห์

@SLaks มันหมายความว่าทุกครั้งที่ฉันติดตั้งแพ็คเกจใด ๆ ฉันต้องป้อนในโฟลเดอร์รูทและดำเนินการnpm install? สำหรับพวกเขาทั้งหมด?
Drumnbass

@Drumnbass: ไม่ npm installติดตั้งการอ้างอิงทั้งหมดด้วย
SLaks

16

ฉันมีปัญหาเดียวกันสำหรับฉันnpm install request --save แก้ปัญหาได้ หวังว่าจะช่วยได้


1

ฉันประสบปัญหาเดียวกันนี่คือวิธีที่ฉันทำให้มันได้ผล ..

เปิดเทอร์มินัล:

mkdir testExpress
cd testExpress
npm install request

หรือ

sudo npm install -g request // If you would like to globally install.

ตอนนี้อย่าใช้

โหนดapp.jsหรือโหนดtest.jsคุณจะพบปัญหานี้ในการทำเช่นนั้น คุณยังสามารถพิมพ์ปัญหาที่เป็นสาเหตุได้โดยใช้คำสั่งนี้ .."node -p app.js"

คำสั่งด้านบนเพื่อเริ่ม nodeJs ถูกเลิกใช้แล้ว ใช้แทน

npm start

น่าดู ..

testExpress@0.0.0 start /Users/{username}/testExpress
node ./bin/www

เปิดเว็บเบราว์เซอร์ของคุณและตรวจสอบ localhost: 3000

คุณควรเห็น Express install (ยินดีต้อนรับสู่ Express)


1

ฉันพบปัญหาเดียวกันกับการติดตั้งทั่วโลกจากนั้นฉันพยายามติดตั้งในเครื่องและใช้งานได้


1

หากบางโมดูลคุณไม่พบให้ลองใช้ Static URI ตัวอย่างเช่น:

var Mustache = require("/media/fabio/Datos/Express/2_required_a_module/node_modules/mustache/mustache.js");

ตัวอย่างนี้รันบน Ubuntu Gnome 16.04 จาก 64 บิตโหนด -v: v4.2.6, npm: 3.5.2 อ้างถึง: บล็อกของ Ben Nadel


0

ReferenceError: ไม่พบตัวแปร: ต้องใช้

คุณได้ติดตั้ง "npm" คุณสามารถเรียกใช้สคริปต์ไปยัง "localhost" "127.0.0.1" ได้ตามปกติ

เมื่อคุณใช้ http.clientRequest () กับ "ตัวเลือก" ใน "npm" คุณจะต้องติดตั้ง "RequireJS" ภายในโมดูล

โมดูลคือไฟล์หรือไดเร็กทอรีใด ๆ ในไดเร็กทอรี node_modules ที่ Node สามารถโหลดได้ ติดตั้ง "RequiereJS" เพื่อให้ http.clientRequest ทำงานได้ (ตัวเลือก)


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.