首页 > 解决方案 > Heroku Node.js 服务器在运行 npm start 脚本时出错

问题描述

我已经在 heroku 上运行了一年没有任何问题的服务器,但是在上次部署时,它在运行时出现错误,信息很少npm start,除了模块更新之外,回滚构建和这个新部署之间几乎没有变化,但是一个有效,另一个无效。

我更新了我的包,明确说明了我的 NPM 和 Node 版本(如下所示,我的 package.json 文件),并测试了多个回滚以查看它们有什么不同(这似乎没什么)。由于错误发生在我的服务器代码之前(如下所示),我什至不知道从哪里开始诊断。

node server.js除了运行不起作用之外,控制台几乎没有提供任何解释:

2020-10-26T07:42:03.627918+00:00 heroku[web.1]: Starting process with command `npm start`
2020-10-26T07:42:07.108788+00:00 app[web.1]: 
2020-10-26T07:42:07.108829+00:00 app[web.1]: > wts-server@0.1.3 start /app
2020-10-26T07:42:07.108830+00:00 app[web.1]: > node server.js
2020-10-26T07:42:07.108830+00:00 app[web.1]: 
2020-10-26T07:42:08.624074+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2020-10-26T07:42:08.624385+00:00 app[web.1]: npm ERR! errno 1
2020-10-26T07:42:08.628135+00:00 app[web.1]: npm ERR! wts-server@0.1.3 start: `node server.js`
2020-10-26T07:42:08.628296+00:00 app[web.1]: npm ERR! Exit status 1
2020-10-26T07:42:08.628470+00:00 app[web.1]: npm ERR! 
2020-10-26T07:42:08.628623+00:00 app[web.1]: npm ERR! Failed at the wts-server@0.1.3 start script.
2020-10-26T07:42:08.628776+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2020-10-26T07:42:08.639120+00:00 app[web.1]: 
2020-10-26T07:42:08.639338+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2020-10-26T07:42:08.639462+00:00 app[web.1]: npm ERR!     /app/.npm/_logs/2020-10-26T07_42_08_630Z-debug.log
2020-10-26T07:42:08.690140+00:00 heroku[web.1]: Process exited with status 1

这是我的package.json文件:

{
  "name": "wts-server",
  "jest": {
    "testEnvironment": "node",
    "verbose": true
  },
  "version": "0.1.3",
  "description": "Server for West Coast Megagames Watch the Skies Prototype.",
  "main": "server.js",
  "directories": {
    "test": "tests"
  },
  "scripts": {
    "start": "node server.js",
    "server": "nodemon server.js",
    "client": "npm start --prefix ../reactapp",
    "dev": "concurrently \"npm run server\" \"npm run client\"",
    "test": "jest --detectOpenHandles --coverage"
  },
  "engines": {
    "node": "12.18.3",
    "npm": "6.14.6"
  },
  "author": "John T. Cleveland",
  "license": "ISC",
  "dependencies": {
    "bcryptjs": "^2.4.3",
    "body-parser": "^1.19.0",
    "compression": "^1.7.4",
    "concurrently": "^5.3.0",
    "config": "^3.3.2",
    "cors": "^2.8.5",
    "debug": "^4.2.0",
    "express": "^4.17.1",
    "express-async-errors": "^3.1.1",
    "helmet": "^3.23.3",
    "joi": "^17.3.0",
    "jsonwebtoken": "^8.5.1",
    "mongodb": "^3.6.2",
    "mongoose": "^5.10.10",
    "socket.io": "^2.3.0",
    "supports-color": "^7.2.0",
    "winston": "^3.3.3",
    "winston-mongodb": "^5.0.5"
  },
  "devDependencies": {
    "jest": "^26.6.1",
    "nodemon": "^2.0.6",
    "supertest": "^4.0.2"
  }
}

服务器本身似乎根本没有激活,因为通常我会收到信息消息。该错误似乎发生在代码之前,我想知道我是否错过了一些小东西。

server.js即使它根本没有被击中:

const express = require('express'); // Import of EXPRESS to create routing app
const http = require('http'); // Import of the NODE HTTP module to create the http server
const { logger } = require('./middleware/log/winston'); // Import of winston for error logging

logger.info('Starting boot-up for WTS Game server...');

require('supports-color'); // Allows colors for debug panel

// Start up proceesses
logger.info('Loading Start-up proceesses...');
const app = express(); // Init for express
logger.info('Express app started...');
const server = http.createServer(app); // Creation of an HTTP server
logger.info('HTTP server created...');
require('./middleware/log/logging')(); // Bootup for error handling
require('./routes/sockets')(server); // Starts websocket
require('./routes/routes')(app); // Bootup for Express routes
require('./middleware/mongoDB/db')(); // Bootup of MongoDB through Mongoose
require('./config/config')(); // Bootup for special configurations
require('./middleware/production/prod')(app); // Production compression and middleware

app.use(express.static('public'));

const port = process.env.PORT || 5000; // Server entry point - Node Server
server.listen(port, () => logger.info(`WTS Server started on port ${port}...`));

代码在开发环境中运行良好,直到这个合并在 heroku 上运行良好,没有实际的错误来诊断我不知道为什么它现在不能启动。任何帮助都会很棒。

标签: javascriptnode.jsherokuserver

解决方案


推荐阅读