nodejs + express 웹 개발 중에 알수없는 오류가 발생합니다


nodejs 를 supervisor로 돌리고 있습니다 (console)

웹에서 게시글을 쓰는데 '등록' 버튼을 누르면 nodejs 에서 파일 업로드 기능과 mysql insert, update 기능을 해줍니다.

등록버튼을 누르면 router.post('/:professor_id/:subject_name/new', function(req, res, next) 가 실행됩니다. 코드는 다음과 같습니다

var mkdirp = require('mkdirp');    
var multiparty = require('multiparty');

router.post('/:professor_id/:subject_name/new', function(req, res, next) {
        var professor_id = req.params.professor_id;
        var subject_name = req.params.subject_name;
        var user = req.session.user;
        var title;
        var content;
        var writer = user.account_name;
        var sql = 'SELECT semester_name FROM nowsemester';
        var filelist = '';
        var semester_name;
        con.query(sql, function(err, rows, fields) {
            if (err) throw err;
            semester_name = rows[0].semester_name;
            mkdirp('uploads/' + semester_name + '/' + professor_id + '/' + subject_name, function(err) {
              if(err) throw err;
            });

            var form = new multiparty.Form();
            form.on('field', function(name, value) {
                if (name === 'title')
                    title = value;
                else if (name === 'content')
                    content = value;
            });

            form.on('part', function(part) {
                var filename;
                var size;
                if (part.filename) {
                    filename = part.filename;
                    size = part.byteCount;
                    filelist += filename + '/';

                } else
                    part.resume();

                var writeStream = fs.createWriteStream('uploads/' + semester_name + '/' + professor_id + '/' + subject_name + '/' + filename);
                writeStream.filename = filename;
                part.pipe(writeStream);
                part.on('end', function() {
                    writeStream.end();
                    var sql = 'INSERT INTO file (file_path) values (?)';
                    con.query(sql, [filelist], function(err, rows, fields) {
                        if (err) throw err;
                    });
                });
            });

            form.on('close', function() {
                var sql = 'INSERT INTO lectureboard (lecture_title, lecture_content, lecture_viewcount, professor_id, subject_name, lecture_kind, semester_name) values (?, ?, ?, ?, ?, ?, ?)';
                con.query(sql, [title, content, 0, user.account_id, subject_name, 0, semester_name], function(err, rows, fields) {
                    if (err) throw err;
                    if (filelist != '') {
                        console.log(rows.insertId);
                        var sql = 'UPDATE file SET lecture_number = ? WHERE professor_id = ? AND subject_name = ? AND semester_name = ?';
                        con.query(sql, [rows.insertId, user.account_id, subject_name, semester_name], function(err, rows, fields) {
                            if (err) throw err;
                            console.log(rows.insertId);
                            var sql = 'UPDATE lectureboard SET filehave = 1 WHERE lecture_number = ? AND professor_id = ? AND subject_name = ? AND semester_name = ?';
                            con.query(sql, [rows.insertId, user.account_id, subject_name, semester_name], function(err, rows, fields) {
                                if (err) throw err;
                                subject_name = encodeURI(subject_name);
                                return res.redirect('/lecture/' + professor_id + '/' + subject_name);
                            });

                        });
                    }
                });
            });
            form.parse(req);
        });

    });

그런데 '등록' 버튼을 누르면 'crashing child' 이라는 메시지가 console 화면에 나타납니다. 그래서 검색을 해보니 자료가 없네요... 해답을 알려주시면 감사하겠습니다..ㅠ

  • 2016년 10월 10일에 작성됨

  • db조회 혹은 파일처리를 위해서 생성된 child process에서 크래쉬가 난거아닐까요     kishe89   2016.10.17 11:38     
조회수 79


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close