pm2 error
596
작성한 질문수 10
const express = require("express");
const cookieParser = require("cookie-parser");
const morgan = require("morgan");
const session = require("express-session");
const router = express.Router();
const path = require("path");
const dotenv = require("dotenv");
const passport = require("passport");
const app = express();
const passportConfig = require("./passport");
const redis = require("redis");
const RedisStore = require("connect-redis").default;
dotenv.config();
const redisClient = redis.createClient({
url: `redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT}`,
password: process.env.REDIS_PASSWORD,
legacyMode: false,
});
redisClient.connect().catch(console.error);
const authRouter = require("./routes/auth");
const pageRouter = require("./routes/page");
const postRouter = require("./routes/post");
const userRouter = require("./routes/user");
const commentRouter = require("./routes/comment");
const updateRouter = require("./routes/update");
const deleteRouter = require("./routes/delete");
const helmet = require("helmet");
const hpp = require("hpp");
const { sequelize } = require("./models");
const logger = require("./logger");
passportConfig();
app.set("port", process.env.PORT || 8005);
sequelize
.sync({ force: false })
.then(() => {
console.log("데이터베이스 연결 성공");
})
.catch((err) => {
console.error(err);
});
if (process.env.NODE_ENV === "production") {
app.use(
helmet({
contentSecurityPolicy: false,
crossOriginEmbedderPolicy: false,
crossOriginResourcePolicy: false,
crossOriginOpenerPolicy: false,
originAgentCluster: false,
})
);
app.use(hpp());
app.use(morgan("combined"));
} else {
app.use(morgan("dev"));
}
app.use(express.json({ limit: "10mb" }));
var cors = require("cors");
const { deepStrictEqual } = require("assert");
app.use(cors());
app.use("/img", express.static(path.join(__dirname, "uploads")));
app.use("/profileImg", express.static(path.join(__dirname, "profileImg")));
app.use(express.json());
app.use(express.urlencoded({ limit: "10mb", extended: false }));
app.use(cookieParser(process.env.COOKIE_SECRET));
const sessionOption = {
resave: false,
saveUninitialized: false,
secret: process.env.COOKIE_SECRET,
cookie: {
httpOnly: true,
secure: false,
},
store: new RedisStore({ client: redisClient }),
};
if (process.env.NODE_ENV === "production") {
sessionOption.proxy = true;
}
app.use(session(sessionOption));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static(path.join(__dirname, "prototype-client/build")));
app.get("/", (req, res) => {
res.sendFile(path.join(__dirname, "prototype-client/build/index.html"));
});
app.use("/page", pageRouter);
app.use("/auth", authRouter);
app.use("/post", postRouter);
app.use("/user", userRouter);
app.use("/comment", commentRouter);
app.use("/update", updateRouter);
app.use("/delete", deleteRouter);
//react에서 react-router-dom으로 다룰 수 있게
app.get("*", function (req, res) {
res.sendFile(path.join(__dirname, "/prototype-client/build/index.html"));
});
//에러 처리 담당
app.use((req, res, next) => {
const error = new Error(`${(req, method)} ${req.url} 라우터가 없습니다.`);
error.status = 404;
logger.info("hello");
logger.error(error.message);
next(error);
});
app.use((err, req, res, next) => {
console.error(err);
res.locals.message = err.message;
res.locals.erorr = process.env.NODE_ENV !== "production" ? err : {};
res.status(err.status || 500);
res.render("error");
});
module.exports = app;이렇게 코드를 실행하면 sudo pm2 monit의 server log에 2가지 에러가 나옵니다.
server > [Error: ENOENT: no such file or directory, stat
│ ││ server > errno: -2,
│ ││ server > code: 'ENOENT',
│ ││ server > syscall: 'stat',
│ ││ server > path: '/home/bitnami/Whats-up/prototype-client/bu │
│ ││ server > expose: false,
│ ││ server > statusCode: 404,
│ ││ server > status: 404
│ ││ server > }
에러 메시지를 봤을때 해당 경로에 대한 파일을 찾을 수 없다고 하는데 ls를 입력했을때 잘 있는걸 확인 할 수 있는데 왜 이런 에러가 발생하는지 모르겠습니다..
2번쨰는
server > Error: No default engine was specified and no
││ server > at new View (/home/bitnami/Whats-up/node_module │
││ server > at Function.render (/home/bitnami/Whats-up/node │
││ server > at ServerResponse.render (/home/bitnami/Whats-u │
││ server > at /home/bitnami/Whats-up/app.js:127:7 │
││ server > at Layer.handle_error (/home/bitnami/Whats-up/n │
││ server > at trim_prefix (/home/bitnami/Whats-up/node_mod │
││ server > at /home/bitnami/Whats-up/node_modules/express/
││ server > at Function.process_params (/home/bitnami/Whats
이런 에러가 발생합니다. 에러 메세지를 봤을떄는 view engine관련된 에러같은데 react랑 express연동할때는 따로 view engine 설정을 주지 않고 express.static으로 리액트 코드를 전달하면 되는거 아닌가요?
답변 2
0
ls /home/bitnami/Whats-up/prototype-client/build/index.html
해보세요
0
감사합니다..선생님
ls 해서 build파일이 있는지 없는지 확인했더라면 좋았을텐데... 당연히 github에 잘 올라갔는줄 알고 ls할 생각을 못했네요... gitignore에 /build가 있었습니다. 정말 감사합니다
0
res.render를 사용하면 view engine 에러가 발생합니다. res.render가 아니라 res.sendFile로 index.html을 주셔야 합니다.
0
답변 감사합니다.
그런데
app.get("/", (req, res) => {
res.sendFile(path.join(__dirname, "/prototype-client/build/index.html"));
});
app.use("/page", pageRouter);
app.use("/auth", authRouter);
app.use("/post", postRouter);
app.use("/user", userRouter);
app.use("/comment", commentRouter);
app.use("/update", updateRouter);
app.use("/delete", deleteRouter);
//react에서 react-router-dom으로 다룰 수 있게
app.get("*", function (req, res) {
res.sendFile(path.join(__dirname, "/prototype-client/build/index.html"));
});
이 코드를 실행하고 보면
아래와 같은 에러가 발생합니다.
server > [Error: ENOENT: no such file or directory, stat │
│ ││ server > errno: -2,
│ ││ server > code: 'ENOENT',
│ ││ server > syscall: 'stat',
│ ││ server > path: '/home/bitnami/Whats-up/prototype-client/build/s │
│ ││ server > expose: false,
│ ││ server > statusCode: 404,
│ ││ server > status: 404
│ ││ server > }
이 에러가 왜 발생하는지 도저히 이해가 안됩니다.. 로컬에서는 분명히 잘 실행 되었습니다..
혹시 문제를 해결할만한 힌트라도 주실 수 있으신가요?..
0
아 저게 에러에 원래 build/i 밖에 안나와서 뭔가 이상해서 테스트 좀 해본다고
app.get("/", (req, res) => { res.sendFile(path.join(__dirname, "/prototype-client/build/index.html")); }); 에서 index.html을 잠시 sdex.html로 고치고 실행해본건데 원래는 build/i라고 나옵니다. 제 생각에는 칸수가 안되서 i까지 밖에 안나오는 것 같습니다
깃헙 질문
0
82
2
강의 1-1 수업노트의 로드맵 링크가 작동하지 않습니다.
0
76
1
aws - lightsail 이용 관련
0
58
1
4강 http 서버 만들때 ESM방식으로 해도 될까요?
0
81
2
모듈 사용 시 단점이 있나요?
0
81
1
node.js 버전 및 typescript 적용 문의
0
93
2
12.7. 방장기능(강퇴) 질문드립니다.
0
80
2
12.7 socket.js코드 그대로 뱃겨서 했는데, socket.request.session.color가안나오네요
0
69
1
12.7 코드 그대로 뱃겨서 햇는데 스샷같이 오류가뜹니다.
0
75
2
12.7.1스스로 해보기 질문되나요
0
95
3
시퀄라이즈 실습하기 질문드립니다.
0
196
9
<7-5. 시퀄라이즈 사용하기>수업 질문 드립니다.
0
97
2
크롬에서 user id를 인풋에 입력하고 등록하면 404 에러처리 페이지가 뜹니다.
0
113
2
구매 결제관련 질문입니다 !
0
122
1
다수의 supertest 가 실행될 때 force:true로 인한 DB 초기화 문제
0
133
2
node 설치 방법이 전혀다르게 바뀐것 같습니다.
0
152
2
12강 깃허브에 있는 12.7 chat.html 복붙했는데 css오류
0
122
2
무료/프리미엄 동시 소유 시 질문
0
117
1
비주얼 스튜디오 코드로 계속 진행해도 괜찮을까요?
0
135
2
10강 cors에러 localhost:4000으로 접속했을때 에러
1
159
2
webstorm 해결할 수 없는 변수 문제
0
155
2
혹시 몽고DB 쓸거면 MySQL 강의 스킵해도 되나요?
0
149
2
LightSail 실행 중 오류 질문드립니다!
0
204
2
RedisStore 사용법 질문
0
133
2





