#javascript #node.js #express #heroku
#javascript #node.js #экспресс #heroku
Вопрос:
Здравствуйте, я пытаюсь развернуть приложение на heroku через мой github. Я изменил сценарий запуска внутри package.json, чтобы перейти в файл src, где есть app.js это должен быть файл на стороне сервера.
Это мой package.json:
{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "./node_modules/nodemon/bin/nodemon.js src/app.js --exec 'npm run lint amp;amp; node'",
"lint": "eslint "**/*.js"",
"start": "node src/app.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.0",
"cors": "^2.8.5",
"express": "^4.17.1",
"morgan": "^1.10.0",
"nodemon": "^2.0.7"
},
"devDependencies": {
"eslint": "^7.23.0",
"eslint-plugin-vue": "^7.8.0"
}
}
Это каталог файлов:
И это код внутри app.js файл:
console.log("hello")
const express = require('express')
const bodyParser = require('body-parser')
const cors = require('cors')
const morgan = require('morgan')
const app = express()
app.use(morgan('combine'))
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(cors())
app.get('/status', (req,res)=>{
res.send({
message: 'hello world!'
})
})
app.listen(process.env.PORT || 8081)
Полное сообщение об ошибке, которое я получил от Heroku,:
2021-04-02T15:36:38.339680 00:00 heroku[web.1]: Starting process with command `npm start`
2021-04-02T15:36:43.511317 00:00 heroku[web.1]: Process exited with status 1
2021-04-02T15:36:43.688509 00:00 heroku[web.1]: State changed from starting to crashed
2021-04-02T15:36:43.392349 00:00 app[web.1]: npm ERR! missing script: start
2021-04-02T15:36:43.424949 00:00 app[web.1]:
2021-04-02T15:36:43.425845 00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2021-04-02T15:36:43.426219 00:00 app[web.1]: npm ERR! /app/.npm/_logs/2021-04-02T15_36_43_393Z-debug.log
2021-04-02T15:36:44.616474 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=tft-training-tool.herokuapp.com request_id=7c11d9b2-66b5-4daf-ba1d-ad3c22e0706a fwd="90.255.93.115" dyno= connect= service= status=503 bytes= protocol=https
2021-04-02T15:36:44.843068 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=tft-training-tool.herokuapp.com request_id=3411084a-5fa2-4563-96b9-879b3735f80a fwd="90.255.93.115" dyno= connect= service= status=503 bytes= protocol=https
Комментарии:
1. Может быть проблема в том, что я развертываю его через github, но package.json отсутствует в главном каталоге, он находится в папке сервера?
Ответ №1:
Похоже, что у вас есть папка с package.json
и package-lock.json
, которая является корневой папкой, которая содержит две другие папки client
и server
у которых есть свои собственные package.json
package-lock.json
файлы и (по крайней мере, папка сервера, как я вижу на изображении выше, поэтому вы автоматически настраиваете скрипты для сервера внутри package.json
внутренней папки сервера. Поскольку Heroku объединяет все репозитории, он передает package.json
содержимое root
папки в качестве конфигурации на ваш сервер, который, похоже, не содержит start
скрипта.