#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 для структуры проекта .