error : [remote rejected] main -> main (pre-receive hook declined)
Some possible problems:
- Node version not specified in package.json
https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version
Love,
Heroku
! Push rejected, failed to compile Node.js app.
! Push failed
이런 오류가 뜨는데 검색결과 여러 방법이 있는듯 했지만 일단은 간단한 방법을 사용했다.
package-lock.json
파일을 다른곳으로 백업해두고 지우면 heroku
에 저 오류가 뜨지않고 push
된다.
const jsonServer = require("json-server");
const server = jsonServer.create();
const router = jsonServer.router("./db.json");
const middlewares = jsonServer.defaults({ static: "./dist" });
const port = process.env.PORT || 3000;
server.use(middlewares);
server.use(router);
server.listen(port);
meddlewares
에 static
이 react
기준인 build 폴더로
되어 있었다.
로 바꿔준다.
Node.js 버전 지정 오류
heroku 에 build를 하고나면 node version error가 뜬다. node 버전을 지정하지 않아서 생긴오류인듯 하다.
이 오류는 터미널에서도 친절하게 홈페이지 자료를 링크걸어준다.
url : https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version
$ node --version 을 터미널에 쳐서 버전을 확인한다.
결과 예) : v18.7.0
먼저 애플리케이션이 빌드팩을 사용하고 있는지 확인합니다 $ heroku/nodejs.
heroku buildpacks
=== issuetriage Buildpack URLs
1. heroku/nodejs
노드버전을 package.json에서 추가 해준다.
"name": "todolist",
"version": "0.1.0",
"private": true,
"engines": {
"node": "20.x" 👈
},