ОШИБКА npm! отсутствует скрипт: запуск на heroku

#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 скрипта.