Приложение MERN, удаляющееся в Heroku — package.json не найдено

#node.js #reactjs #git #heroku #npm

Вопрос:

Я пытаюсь использовать интерфейс командной строки Heroku, чтобы запустить приложение MERN в Интернете. Приложение отлично работает локально, но когда я пытаюсь использовать git, чтобы перенести приложение на Heroku, я получаю следующее сообщение об ошибке:

 remote:        Running heroku-postbuild
remote:        
remote:        > exercise-logger@1.0.0 heroku-postbuild /tmp/build_431a136c
remote:        > NPM_CONFIG_PRODUCTION=false npm install --prefix exercise-logger amp;amp; npm run build --prefix exercise-logger
remote:        
remote:        up to date in 0.22s
remote:        found 0 vulnerabilities
remote:        
remote: npm ERR! code ENOENT
remote: npm ERR! syscall open
remote: npm ERR! path /tmp/build_431a136c/exercise-logger/package.json
remote: npm ERR! errno -2
remote: npm ERR! enoent ENOENT: no such file or directory, open '/tmp/build_431a136c/exercise-logger/package.json'
remote: npm ERR! enoent This is related to npm not being able to find a file.
remote: npm ERR! enoent 
remote: 
remote: npm ERR! A complete log of this run can be found in:
remote: npm ERR!     /tmp/npmcache.yesMz/_logs/2021-05-30T17_32_30_947Z-debug.log
remote: npm ERR! code ELIFECYCLE
remote: npm ERR! errno 254
remote: npm ERR! exercise-logger@1.0.0 heroku-postbuild: `NPM_CONFIG_PRODUCTION=false npm install --prefix exercise-logger amp;amp; npm run build --prefix exercise-logger`
remote: npm ERR! Exit status 254
remote: npm ERR! 
remote: npm ERR! Failed at the exercise-logger@1.0.0 heroku-postbuild script.
remote: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
remote: 
remote: npm ERR! A complete log of this run can be found in:
remote: npm ERR!     /tmp/npmcache.yesMz/_logs/2021-05-30T17_32_30_973Z-debug.log
remote: 
remote: -----> Build failed
remote:        
remote:        We're sorry this build is failing! You can troubleshoot common issues here:
remote:        https://devcenter.heroku.com/articles/troubleshooting-node-deploys
remote:        
remote:        Some possible problems:
remote:        
remote:        - node_modules checked into source control
remote:          https://devcenter.heroku.com/articles/node-best-practices#only-git-the-important-bits
remote:        
remote:        Love,
remote:        Heroku
remote:        
remote:  !     Push rejected, failed to compile Node.js app.
remote: 
remote:  !     Push failed
remote:  !
 

Суть этого, похоже, в том, что он не может найти файл корневого пакета.json, хотя он определенно там есть. На самом деле, вот оно:

 "name": "exercise-logger",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "dependencies": {
    "axios": "^0.21.1",
    "bcrypt": "^5.0.1",
    "concurrently": "^6.0.2",
    "config": "^3.3.6",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "express-validator": "^6.10.0",
    "jsonwebtoken": "^8.5.1",
    "mongoose": "^5.12.3"
  },
  "devDependencies": {},
  "scripts": {
    "start": "node server.js",
    "build": "cd client amp;amp; npm run build",
    "server": "nodemon server.js",
    "client": "npm start --prefix client",
    "clientinstall": "npm install --prefix client",
    "dev": "concurrently "npm run start" "npm run client"",
    "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client amp;amp; npm run build --prefix client"
  },
  "engines": {
    "node": "14.x",
    "npm": "6.x"
  },
  "author": "",
  "license": "ISC"
}

 

Я попробовал то, что кажется обычным исправлением, которое заключается в ручном удалении папки .git в каталоге приложения React, но, похоже, это не исправлено.

Весь код находится на Github здесь.

Кто-нибудь может помочь? Я довольно долго работал над этим проектом, так что очень неприятно вот так падать на последнем препятствии. Я действительно не делал ничего подобного раньше, поэтому не совсем уверен, с чего начать устранение неполадок!

Спасибо

Комментарии:

1. Это может быть или не быть источником вашей проблемы, но в вашем репозитории github, похоже, отображается недопустимое отслеживание git. Например, в вашем репо отсутствует весь client исходный код, и node_modules его не следует отслеживать ( .gitignore следует игнорировать его).

2. Спасибо, это звучит многообещающе… Я сделал git add —all, и он добавил все в исходном коде клиента в следующую фиксацию, но все равно получил то же сообщение об ошибке с Heroku и тоже перешел на Github, но он все еще показывает отсутствующий клиентский источник вместо обновленного? Извините, что я выгляжу полным идиотом, но я тоже не часто использовал git. Также мне понадобится файл .gitignore в корневом каталоге? (В папке клиента есть один, и в нем есть node_modules….)

3. Там должен быть корень gitignore . См. Пример репо fullstack . См. раздел README для структуры проекта .