Node.js“发送后无法设置标头”错误消息

问题描述 投票:0回答:1

我在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数据时会发生此错误。

我该如何解决?

node.js
1个回答
1
投票

如果出现任何错误,我们的想法是停止执行您的功能。 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!');
  });
});
© www.soinside.com 2019 - 2024. All rights reserved.