Node js에서 이미지를 업로드 하는데 자주 만나는 에러다.
초반에는 라우터 설정 파일에서 method를 지정해주지 않아서 함수를 인식하지 못하였으므로 당연히 업로드 될 수 있는 파일이 없었다.
form의 method가 get이냐 post냐에 따라 분기하고 post인 경우 각 함수인 경우 파일 업로드 할 수 있게 되어 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | if (curItem.type == 'get') { router.route(curItem.path).get(curModule[curItem.method]); } else if (curItem.type == 'post') { console.log('route post'); if(curItem.method=='images'||curItem.method=='siteinsert'||curItem.method=='siteupdate'){ //이미지 저장하는 함수인 경우 console.log('route post2'); router.route(curItem.path).post(upload.array('bookmarkImg',1),curModule[curItem.method]); console.log(router.route(curItem.path).post(upload.array('bookmarkImg',1),curModule[curItem.method])); console.log('route post3'); }else{ router.route(curItem.path).post(curModule[curItem.method]); } } else { router.route(curItem.path).post(curModule[curItem.method]); } | cs |
방금 만난 에러는 한 파일에 두개의 form이 들어 있어서 생기는 문제였다. Modal에 form을 각각 달아 놨는데 복붙을 한 게 화근이었다. class, id 등이 같으므로 한 곳에서 아무리 파일 업로드를 해도 나머지 한 곳에서는 분명히 비어있으므로 비어있다고 하는 것이다.
req.body를 찍으면 type이 file이 아닌 다른 input의 값들은 잘 나오는데 req.file을 찍으면 [] 이렇게 나왔었다. 귀찮다고 복붙하면 큰일난다...
TypeError: Path must be a string. Received undefined
TypeError: Cannot read property 'file' of undefined
'JS' 카테고리의 다른 글
Javascript Object length 객체 길이 (0) | 2018.08.10 |
---|---|
javascript How to force reloading a page when using browser back button? (0) | 2018.08.06 |
Modal에 값 전달 (0) | 2018.08.02 |
실시간으로 생긴 태그 클릭 안될 때 (0) | 2018.07.30 |
append() html() prepend() (0) | 2018.07.30 |