-
글쓴이글
-
2021년 7월 26일 16:04 #12123
김창규참가자안녕하세요 제가 router를 사용하여 url에 접속시 router.js에서 html파일을 보여주는 코드를 작성하였습니다. 그런데
ForbiddenError: Forbidden
위와 같이 이상한 에러가 뜨면서 안 됌니다 코드는 아래와 같이 작성 하였습니다.
server.js
const express = require('express');
const app = express();app.use('/',require('./routes/route.js'));
app.listen(8080,function(){
console.log('서버실행');
});route.js
const router = require('express').Router();
const AWS = require("aws-sdk");
AWS.config.loadFromPath(__dirname + "/../config/awsconfig.json");
const multer = require("multer");
const multerS3 = require('multer-s3');
let s3 = new AWS.S3();let upload = multer({
storage: multerS3({
s3: s3,
bucket: "canyoncontainer",
key: function (req, file, cb) {
cb(null, Date.now().toString() + 'Incident')
},
acl: 'public-read-write',
})
})router.get('/', function(req, res) {
res.sendFile(__dirname + '/../index.html');
});router.post('/upload', upload.single("Incident"), function(req, res, next){
let imgFile = req.file;
res.json(imgFile);
})module.exports = router;
2021년 7월 26일 17:14 #12131
codingapple키 마스터전체 에러메세지가 필요할 것 같은데요 어떨 때 에러메세지가 뜨는 지도요
하지만 일단 아마존 s3 콘솔에서 접속허용 옵션을 제대로 설정하지 않아서 그런 것 같은 느낌이 듭니다
2021년 7월 26일 19:04 #12141
김창규참가자router js를 이런 식으로 전부 주석처리하고 get요청 하나만 남겨도 오류가 계속 나옵니다. 오류도 밑에 적어두겠습니다.
const router = require('express').Router();
// const AWS = require("aws-sdk");
// AWS.config.loadFromPath(__dirname + "/../config/awsconfig.json");
// const multer = require("multer");
// const multerS3 = require('multer-s3');
// require('dotenv').config();
// let s3 = new AWS.S3();// let upload = multer({
// storage: multerS3({
// s3: s3,
// bucket: process.env.BUKKIT,
// key: function (req, file, cb) {
// cb(null, Date.now().toString() + 'Incident')
// },
// acl: 'public-read',
// })
// })router.get('/', function(req, res) {
res.sendFile(__dirname + '/../index.html');
});// router.post('/upload', upload.single("Incident"), function(req, res, next){
// let imgFile = req.file;
// res.json(imgFile);
// })module.exports = router;
//오류메세지
ForbiddenError: Forbidden
at SendStream.error (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\upload\node_modules\send\index.js:270:31)
at SendStream.pipe (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\upload\node_modules\send\index.js:553:12)
at sendfile (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\upload\node_modules\express\lib\response.js:1103:8)
at ServerResponse.sendFile (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\upload\node_modules\express\lib\response.js:433:3)
at C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\upload\routes\route.js:21:7
at Layer.handle [as handle_request] (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\upload\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\upload\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\upload\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\upload\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\canky\OneDrive\바탕 화면\개인프로젝트\upload\node_modules\express\lib\router\index.js:281:222021년 7월 26일 20:53 #12145
codingapple키 마스터sendFile할 때 path.join(__dirname, 'index.html경로~~')
이렇게 써보도록 합시다 path가 없으면 위에서 require('path') 해오도록 합시다
-
글쓴이글
- 답변은 로그인 후 가능합니다.