nodejs connect ไม่พบแบบคงที่


118

หมายเหตุ: ฉันได้ลองวิธีแก้ปัญหาอื่น ๆ ที่ให้ไว้ที่นี่แต่ไม่ได้ผล

มือใหม่กับ NodeJs ฉันพยายามติดตาม AngularJS pro และติดขัดกับการตั้งค่าเซิร์ฟเวอร์ NodeJs ตามหนังสือฉันติดตั้ง nodejs แล้วติดตั้งแพ็คเกจการเชื่อมต่อโดยใช้ npm install connect

จากนั้นดาวน์โหลด angularjs ในโฟลเดอร์ถัดจากโฟลเดอร์ nodejs จากนั้นเขียนไฟล์ server.js เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ นี่คือเนื้อหาของไฟล์:

    var connect = require('connect');
connect.createServer(connect.static("../angularjs")).listen( 5000);

เมื่อฉันเรียกใช้ไฟล์ server.js นี้โดยใช้:

node server.js

ฉันได้รับข้อผิดพลาดดังต่อไปนี้:

 function app(req, res, next){ app.handle(req, res, next); }
 merge(app, proto);
 merge(app, EventEmitter.prototype);
 app.route = '/';
 app.stack = [];
 return app;
 has no method 'static'
   at Object.<anonymous> (C:\web\nodejs\server.js:2:36)
   at Module._compile (module.js:456:26)
   at Object.Module._extensions..js (module.js:474:10)
   at Module.load (module.js:356:32)
   at Function.Module._load (module.js:312:12)
   at Function.Module.runMain (module.js:497:10)
   at startup (node.js:119:16)
   at node.js:906:3

มีไอเดียไหม? ขอบคุณ

คำตอบ:


219

แพ็คเกจการเชื่อมต่อได้ทำการเปลี่ยนแปลงบางอย่างในเวอร์ชัน 3.x ล่าสุดของฐานรหัสโดยย้ายstaticมิดเดิลแวร์ไปยังแพ็กเกจของตัวเอง คุณสามารถดูรายการของแพคเกจที่ได้รับการย้ายมาที่นี่

ดังนั้นคุณมีสองทางเลือก:

ตัวเลือกที่ 1
คุณสามารถติดตั้งการเชื่อมต่อเวอร์ชันเก่า 2.x และใช้งานได้ตามที่เป็นอยู่:

$ npm ติดตั้ง connect@2.XX

การติดตั้ง 2.XX เวอร์ชันล่าสุดจะทำให้การใช้งานปัจจุบันของคุณทำงานได้อย่างถูกต้อง

ตัวเลือกที่ 2
คุณสามารถใช้การเชื่อมต่อเวอร์ชัน 3.x ต่อไปได้และยังเพิ่มserve-static:

$ npm ติดตั้งให้บริการคงที่

คุณจะต้องอัปเดตserver.jsไฟล์ของคุณเพื่อรวมserve-staticโมดูลใหม่:

var connect = require('connect'),
    serveStatic = require('serve-static');

var app = connect();

app.use(serveStatic("../angularjs"));
app.listen(5000);

5
ทำงานให้ฉันโดยใช้จุดเดียวในกรณีของโฟลเดอร์เดียวกันเช่น ./angularjs
coure2011

@ coure2011 ทั้งหมดนี้ขึ้นอยู่กับpwdว่าคุณเริ่มโหนดเมื่อใด การใช้จุดสองจุดถูกต้องเมื่อทำงานnode server.jsเมื่อเริ่มต้นจาก/angularjs(สมมติว่า pwd ของคุณคือ/angularjs/..)
Michael

ฉันลองแล้วตอนนี้ฉันได้รับข้อผิดพลาดในเบราว์เซอร์ "ไม่สามารถรับ /"
Ans Bilal

@AnsBilal ลอง "localhost: 5000 / test.html" สมมติว่าคุณทำตามตัวอย่างในหนังสือ (อ้างอิงใน OP) URL นั้นน่าจะเหมาะกับคุณ
akvallejos

ใช่ฉันกำลังลองตัวอย่างจากหนังสือ (Pro AngularJs โดย Adam Freeman) หลังจากค้นหาบิตเล็กน้อยฉันก็มาถึงวิธีแก้ปัญหาและฉันโพสต์สิ่งนั้นในบล็อกของฉันสำหรับคนอื่น ๆ ด้วย: anscoding.blogspot.com/2017/11/…
Ans Bilal

8

คำตอบของ Dylants มีประโยชน์ อย่างไรก็ตามนี่คือขั้นตอนที่แน่นอนที่ฉันทำตามเพื่อแก้ไขข้อผิดพลาดเดียวกัน 1. จากหน้าต่างคำสั่งเปลี่ยนไดเร็กทอรีเป็นไดเร็กทอรีที่คุณติดตั้ง nodeJS 2. หลังจากรัน npm install connect แล้วให้รัน:

npm install serve-static

3. สร้างไฟล์ชื่อ server.js ด้วยรหัสต่อไปนี้:

var connect = require('connect'),
serveStatic = require('serve-static');

var app = connect();

app.use(serveStatic("./angularjs"));
app.listen(5000);
  1. ในขณะที่ยังอยู่ในหน้าต่างคำสั่งและยังอยู่ในไดเร็กทอรีที่คุณติดตั้ง nodeJS ให้รัน:

    โหนด server.js

  2. ไปที่ URL http: // localhost: 5000 / test.html

สิ่งนี้ควรใช้งานได้ นี่คือการกำหนดค่าไดเร็กทอรีของฉัน: C: \ NodeJSInstallLocation \ angularjs


1
var connect = require('connect'),
    serveStatic = require('serve-static');

connect().use(
    serveStatic("angularjs")
).listen(5000);

4
ยินดีต้อนรับสู่ SO โปรดอ่านข้อมูลเกี่ยวกับstackoverflow.com/help/how-to-answer คำตอบของคุณไม่ได้ให้ข้อมูลเชิงลึกเพิ่มเติมสำหรับคำตอบที่ยอมรับ
Jaques


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