修复 Heroku 以状态 1 退出,错误代码 H10

Fixing Heroku exited with status 1, error code H10

我尝试过各种解决方案;使用 GitHub 作为部署方法,安装 NPM package serve,强制清理缓存,重新安装 node_modules & package-lock.json 甚至将项目从 NPM 切换到 Yarn。我仍然收到以下错误。

错误日志:

2022-01-17T16:20:29.660758+00:00 heroku[web.1]: Process exited with status 1 2022-01-17T16:20:29.752386+00:00 heroku[web.1]: State changed from starting to crashed 2022-01-17T16:20:30.611091+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=ip-tracker-app.herokuapp.com request_id=a46f3082-43fd-45e9-a049-d1076cad194f fwd="2.125.111.225" dyno= connect= service= status=503 bytes= protocol=https 2022-01-17T16:20:31.020509+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=ip-tracker-app.herokuapp.com request_id=c01ac432-ae1c-4994-9fa0-b211a8f00391 fwd="2.125.111.225" dyno= connect= service= status=503 bytes= protocol=https

我的 Package.json 文件:

{
  "name": "ip-address-tracker",
  "version": "1.0.0",
  "description": "*Removed for question*",
  "main": "index.js",
  "directories": {
    "test": "test"
  },
  "scripts": {
    "start": "node server.js",
    "test": "jest --coverage",
    "devStart": "nodemon server.js"
  },
  "jest": {
    "transform": {
      "^.+\.[t|j]sx?$": "babel-jest"
    }
  },
  "repository": {
    "type": "git",
    "url": "*Removed for question*"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "*Removed for question*",
  },
  "homepage": "*Removed for question*",
  "dependencies": {
    "dotenv": "^10.0.0",
    "express": "^4.17.2",
    "jest": "^27.4.7",
    "serve": "^13.0.2"
  },
  "devDependencies": {
    "@babel/core": "^7.16.7",
    "@babel/preset-env": "^7.16.8",
    "babel-jest": "^27.4.6",
    "nodemon": "^2.0.15",
    "regenerator-runtime": "^0.13.9"
  }
}

我的 server.js 文件:

const express = require('express');
const app = express();
const dotenv = require('dotenv');
const result = dotenv.config();

if (result.error) {
    throw result.error;
}

const PORT = process.env.PORT || 3000;

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

app.listen(PORT, () => {
    console.log(`App is listening on ${PORT}.`);
});

我添加了以下 Procfile:

web: npm start

如果你想像 dist 一样提供 html 文件,我在你的服务器上发现了一个问题,试试这个

app.use('/', serveStatic(path.join(__dirname, '/public')))

如果目的是传送图片

app.use(express.static(path.join(__dirname,'public')))