คำถามติดแท็ก express

Express เป็นเฟรมเวิร์กเว็บแอ็พพลิเคชัน Node.js ที่ยืดหยุ่นซึ่งจัดเตรียมชุดคุณลักษณะที่มีประสิทธิภาพสำหรับการสร้างเว็บแอ็พพลิเคชัน

8
bodyParser เลิกใช้งานแล้ว express 4
ฉันใช้ express 4.0 และฉันรู้ว่า body parser ถูกนำออกจาก express core ฉันกำลังใช้การแทนที่ที่แนะนำ แต่ฉันได้รับ body-parser deprecated bodyParser: use individual json/urlencoded middlewares server.js:15:12 body-parser deprecated urlencoded: explicitly specify "extended: true" for extended parsing node_modules/body-parser/index.js:74:29 ฉันจะหามิดเดิลแวร์ที่ควรจะอยู่ที่ไหน หรือฉันไม่ควรได้รับข้อผิดพลาดนี้? var express = require('express'); var server = express(); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); var passport …

17
ฉันจะตั้งค่า NODE_ENV = ผลิตบน Windows ได้อย่างไร
ใน Ubuntu มันค่อนข้างง่าย ฉันสามารถเรียกใช้แอปพลิเคชันโดยใช้: $ NODE_ENV=production node myapp/app.js อย่างไรก็ตามสิ่งนี้ไม่ทำงานบน Windows มีไฟล์กำหนดค่าที่ฉันสามารถตั้งค่าแอตทริบิวต์ได้หรือไม่
340 node.js  express 

8
ตัวแยกวิเคราะห์ร่างกายทำอะไรกับการแสดงด่วน
ผมไม่เข้าใจว่าทำไมเราต้องในโปรแกรมประยุกต์ด่วนที่เราจะได้รับข้อมูลโดยไม่ต้องใช้body-parser body-parserและมันทำอะไรได้จริงและอย่างไร

2
ทำความเข้าใจกับหนังสือเดินทางทำให้เป็นอันดับซีเรียล
คุณจะอธิบายเวิร์กโฟลว์ของวิธีการทำให้เป็นอันดับและวิธีการซีเรียลไลเซชันของ Passport อย่างไรให้กับคนธรรมดา ไม่อยู่ที่ไหนuser.idไปหลังจากที่passport.serializeUserได้รับการเรียกว่า? เรากำลังโทรหาpassport.deserializeUserหลังจากนั้นมันเข้ากับกระแสงานได้ที่ไหน? // used to serialize the user for the session passport.serializeUser(function(user, done) { done(null, user.id); // where is this user.id going? Are we supposed to access this anywhere? }); // used to deserialize the user passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); }); …


8
เรียกใช้ฟังก์ชัน“ local” ภายใน module.exports จากฟังก์ชั่นอื่นใน module.exports?
คุณเรียกฟังก์ชันจากภายในฟังก์ชันอื่นในการmodule.exportsประกาศได้อย่างไร app.js var bla = require('./bla.js'); console.log(bla.bar()); bla.js module.exports = { foo: function (req, res, next) { return ('foo'); }, bar: function(req, res, next) { this.foo(); } } ฉันพยายามเข้าถึงฟังก์ชั่นfooจากภายในฟังก์ชั่นbarและฉันได้รับ: TypeError: Object # ไม่มีเมธอด 'foo' ถ้าฉันเปลี่ยนthis.foo()เป็นเพียงfoo()ฉันจะได้รับ: ReferenceError: foo ไม่ได้ถูกกำหนดไว้
327 node.js  express 

6
ไคลเอ็นต์บนโหนด: Uncaught ReferenceError: require ไม่ได้ถูกกำหนดไว้
ดังนั้นฉันกำลังเขียนแอปพลิเคชันที่มีโหนด / express + jade combo ฉันมีclient.jsซึ่งโหลดบนไคลเอนต์ ในไฟล์นั้นฉันมีรหัสที่เรียกใช้ฟังก์ชันจากไฟล์ JavaScript อื่น ๆ ความพยายามของฉันคือการใช้ var m = require('./messages'); เพื่อที่จะโหลดเนื้อหาของmessages.js(เช่นเดียวกับที่ฉันทำในฝั่งเซิร์ฟเวอร์) และต่อมาในฟังก์ชั่นการโทรจากไฟล์นั้น แต่ไม่ได้กำหนดไว้ในฝั่งไคลเอ็นต์และมันจะพ่นข้อผิดพลาดของแบบฟอร์มrequireUncaught ReferenceError: require is not defined ไฟล์ JS อื่น ๆ เหล่านี้ยังโหลดในรันไทม์ที่ไคลเอนต์เพราะฉันวางลิงค์ที่ส่วนหัวของหน้าเว็บ ดังนั้นไคลเอนต์จึงรู้ถึงฟังก์ชั่นทั้งหมดที่ส่งออกจากไฟล์อื่นเหล่านี้ ฉันจะเรียกใช้ฟังก์ชันเหล่านี้จากไฟล์ JS อื่น ๆ เหล่านี้ (เช่นmessages.js) ในclient.jsไฟล์หลักที่เปิดซ็อกเก็ตไปยังเซิร์ฟเวอร์ได้อย่างไร

6
ดาวน์โหลดไฟล์จาก NodeJS Server โดยใช้ Express
ฉันจะดาวน์โหลดไฟล์ที่อยู่ในเซิร์ฟเวอร์ของฉันไปยังเครื่องของฉันเข้าถึงหน้าในเซิร์ฟเวอร์ nodeJS ได้อย่างไร ฉันกำลังใช้ ExpressJS และฉันลองทำสิ่งนี้แล้ว: app.get('/download', function(req, res){ var file = fs.readFileSync(__dirname + '/upload-folder/dramaticpenguin.MOV', 'binary'); res.setHeader('Content-Length', file.length); res.write(file, 'binary'); res.end(); }); แต่ฉันไม่สามารถรับชื่อไฟล์และประเภทไฟล์ (หรือนามสกุล) มีใครช่วยฉันได้บ้าง

15
Express-js ไม่สามารถรับไฟล์คงที่ของฉันทำไม?
ฉันได้ลดรหัสของฉันเป็นแอพ Express-js ที่ง่ายที่สุดที่ฉันสามารถทำได้: var express = require("express"), app = express.createServer(); app.use(express.static(__dirname + '/styles')); app.listen(3001); ไดเรกทอรีของฉันมีลักษณะเช่นนี้: static_file.js /styles default.css แต่เมื่อฉันเข้าถึง http://localhost:3001/styles/default.cssฉันได้รับข้อผิดพลาดต่อไปนี้: Cannot GET / styles / default.css ฉันใช้และexpress 2.3.3 node 0.4.7ผมทำอะไรผิดหรือเปล่า?
308 node.js  express 

6
ฉันจะใช้ข้อมูล JSON POST ในแอปพลิเคชัน Express ได้อย่างไร
ฉันกำลังส่งสตริง JSON ต่อไปนี้ไปยังเซิร์ฟเวอร์ของฉัน ( { id = 1; name = foo; }, { id = 2; name = bar; } ) บนเซิร์ฟเวอร์ฉันมีสิ่งนี้ app.post('/', function(request, response) { console.log("Got response: " + response.statusCode); response.on('data', function(chunk) { queryResponse+=chunk; console.log('data'); }); response.on('end', function(){ console.log('end'); }); }); เมื่อฉันส่งสตริงมันแสดงให้เห็นว่าฉันได้รับการตอบกลับ 200 ครั้ง แต่วิธีการอีกสองวิธีนั้นไม่เคยทำงาน ทำไมถึงเป็นอย่างนั้น?
307 json  node.js  express 

3
Node.js / Express.js - app.router ทำงานอย่างไร
ก่อนที่ฉันจะถามเกี่ยวกับapp.routerฉันคิดว่าฉันควรอธิบายอย่างน้อยสิ่งที่ฉันคิดว่าเกิดขึ้นเมื่อทำงานกับมิดเดิลแวร์ app.use()กับการใช้ตัวกลางฟังก์ชั่นการใช้งาน เมื่อมีการดำเนินการมิดเดิลแวร์มันจะเรียกมิดเดิลแวร์ถัดไปโดยใช้next()หรือทำให้มิดเดิลแวร์ไม่ได้รับการเรียก นั่นหมายความว่าลำดับที่ฉันวางสายมิดเดิลแวร์ของฉันมีความสำคัญเพราะมิดเดิลแวร์บางตัวขึ้นอยู่กับมิดเดิลแวร์อื่นและมิดเดิ้ลบางอันใกล้จะสิ้นสุดอาจไม่ถูกเรียก วันนี้ฉันทำงานกับแอปพลิเคชันของฉันและให้เซิร์ฟเวอร์ทำงานในพื้นหลัง ฉันต้องการเปลี่ยนแปลงและรีเฟรชหน้าเว็บและดูการเปลี่ยนแปลงในทันที โดยเฉพาะฉันทำการเปลี่ยนแปลงเค้าโครงของฉัน ฉันไม่สามารถทำงานได้ดังนั้นฉันจึงค้นหา Stack Overflow เพื่อหาคำตอบและพบคำถามนี้ มันบอกว่าเพื่อให้แน่ใจว่าเป็นใต้express.static() require('stylus')แต่เมื่อฉันดูรหัสของ OP ฉันเห็นว่าเขาได้รับapp.routerโทรศัพท์เมื่อโทรมิดเดิลแวร์สิ้นสุดและฉันพยายามหาสาเหตุว่าทำไม เมื่อฉันสร้างแอปพลิเคชัน Express.js ของฉัน (เวอร์ชัน 3.0.0rc4) ฉันใช้คำสั่งexpress app --sessions --css stylusและในไฟล์ app.js รหัสของฉันได้รับการตั้งค่าโดยมีรหัสapp.routerข้างต้นทั้งสองexpress.static()และการrequire('stylus')โทร ดังนั้นดูเหมือนว่าถ้ามันมาพร้อมการติดตั้งแบบนั้นแล้วมันควรจะอยู่อย่างนั้น หลังจากจัดเรียงรหัสของฉันอีกครั้งเพื่อให้ฉันเห็นการเปลี่ยนแปลง Stylus ของฉันดูเหมือนว่า: app.configure(function(){ //app.set() calls //app.use() calls //... app.use(app.router); app.use(require('stylus').middleware(__dirname + '/public')); app.use(express.static(__dirname + '/public', {maxAge: 31557600000})); }); app.get('/', routes.index); app.get('/test', …

6
พารามิเตอร์“ ถัดไป” ที่ใช้ใน Express คืออะไร
สมมติว่าคุณมีรหัสง่ายๆแบบนี้: app.get('/', function(req, res){ res.send('Hello World'); }); ฟังก์ชั่นนี้มีสองพารามิเตอร์reqและresซึ่งเป็นตัวแทนของวัตถุร้องขอและตอบสนองตามลำดับ บนมืออื่น ๆ ที่มีฟังก์ชั่นอื่น ๆ nextที่มีพารามิเตอร์ที่สามเรียกว่า ตัวอย่างเช่นลองมาดูรหัสต่อไปนี้: app.get('/users/:id?', function(req, res, next){ // Why do we need next? var id = req.params.id; if (id) { // do something } else { next(); // What is this doing? } }); ฉันไม่เข้าใจว่าประเด็นnext()คืออะไรหรือเพราะเหตุใดจึงใช้งาน ในตัวอย่างนั้นถ้าไม่มี id สิ่งที่กำลังnextทำอยู่จริง
295 node.js  express 

30
Express.js req.body ไม่ได้กำหนด
ฉันได้สิ่งนี้เป็นการกำหนดค่าเซิร์ฟเวอร์ Express ของฉัน app.use(app.router); app.use(express.cookieParser()); app.use(express.session({ secret: "keyboard cat" })); app.set('view engine', 'ejs'); app.set("view options", { layout: true }); //Handles post requests app.use(express.bodyParser()); //Handles put requests app.use(express.methodOverride()); แต่ก็ยังคงเมื่อฉันขออยู่ในเส้นทางของฉันฉันจะได้รับข้อผิดพลาดบางชี้ให้เห็นว่าreq.body.something body is undefinedนี่คือตัวอย่างของเส้นทางที่ใช้req.body: app.post('/admin', function(req, res){ console.log(req.body.name); }); ฉันอ่านว่าปัญหานี้เกิดจากการขาด app.use(express.bodyParser());แต่อย่างที่คุณเห็นฉันเรียกว่าก่อนเส้นทาง เบาะแสใด ๆ
292 node.js  express 


4
จะรับพารามิเตอร์ URL ใน Express ได้อย่างไร
ฉันกำลังประสบปัญหาในการรับค่าtagidจาก URL ของฉัน:localhost:8888/p?tagid=1234ของฉัน: ช่วยฉันออกเพื่อแก้ไขรหัสคอนโทรลเลอร์ของฉัน ฉันไม่สามารถรับtagidค่าได้ รหัสของฉันเป็นดังนี้: app.js: var express = require('express'), http = require('http'), path = require('path'); var app = express(); var controller = require('./controller')({ app: app }); // all environments app.configure(function() { app.set('port', process.env.PORT || 8888); app.use(express.json()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); app.set('view engine', 'jade'); app.set('views', __dirname + '/views'); …

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