我在StackOverflow上阅读了很多关于此的问题,但是我找不到如何解决这个问题。
这是我的代码。
// express 모듈을 가져와서 application 객체 생성
var express = require('express');
var app = express();
// body-parser 모듈을 가져온다.
var bodyParser = require('body-parser');
// 미들웨어의 역할을 하는 bodyParser를 통해 POST방식으로 전달된 데이터를 접근할 수 있도록
// request 객체의 body 객체를 생성한다.
app.use(bodyParser.urlencoded({extended:false}));
// 파일시스템 모듈을 가져온다.
var fs = require('fs');
// template engine 폴더 설정, 사용하는 engine은 jade
app.set('views','./views_file');
app.set('view engine','jade');
// jade로 나타내어지는 html 코드를 이쁘게 보이도록 하는 것.
app.locals.pretty = true;
// 사용자의 특정 url 입력에 대한 response로 new.jade를 rendering 시킨다.
app.get('/topic/new',function(req,res){
res.render('new');
})
// POST 방식으로 전달된 데이터를 data 폴더에 파일로 저장
app.post('/topic', function(req,res){
var title = req.body.title;
var description = req.body.description;
fs.writeFile('/data'+title,description,function(err){
if(err){ res.status(500).send('Internal Server Error');}
res.send('Success!');
})
})
// 3000번 포트를 listening하고 있게 하는 것.
app.listen(3000,function(){
console.log('Connected, 3000 port!');
})
对不起,我的韩国评论。
错误消息是:
发送后无法设置标头。
从/ topic / new捕获POST数据时会发生此错误。
我该如何解决?
如果出现任何错误,我们的想法是停止执行您的功能。 return
语句告诉解释器停止执行并立即将控制权返回给处理程序。但是,请记住,如果函数的某个部分是被调用的最后一部分,则不一定需要在它之前放置return
。所以你的功能可以写成 -
app.post('/topic', function(req,res){
var title = req.body.title;
var description = req.body.description;
fs.writeFile('/data'+title,description,function(err){
if (err) {
return res.status(500).send('Internal Server Error');
}
res.send('Success!');
});
});