【问题标题】:My node + express app deploys fine locally but will not deploy when pushed to heroku我的 node + express 应用程序在本地部署良好,但在推送到 heroku 时不会部署
【发布时间】:2018-12-09 10:16:01
【问题描述】:

如果这是一个基本的解决方案,首先我很抱歉。我是 Node + Express 的新手,仍在尝试解决一些概念!

我有一个在本地启动的 Node + Express 应用程序,但是当我推送到 heroku 或运行 heroku 本地 Web 时,它会以代码 0 退出,并且不会产生任何错误代码供我诊断。

这是我部署到 Heroku 时日志的具体输出:

2018-06-30T11:58:37.052754+00:00 heroku[web.1]: Starting process with command `npm run build`
2018-06-30T11:58:39.336703+00:00 app[web.1]: 
2018-06-30T11:58:39.336728+00:00 app[web.1]: > bookworm-api@1.0.0 build /app
2018-06-30T11:58:39.336733+00:00 app[web.1]: > npm run clean && npm run build-babel
2018-06-30T11:58:39.336734+00:00 app[web.1]: 
2018-06-30T11:58:39.777160+00:00 app[web.1]: 
2018-06-30T11:58:39.777199+00:00 app[web.1]: > bookworm-api@1.0.0 clean /app
2018-06-30T11:58:39.777201+00:00 app[web.1]: > rm -rf build && mkdir build
2018-06-30T11:58:39.777202+00:00 app[web.1]: 
2018-06-30T11:58:40.305583+00:00 app[web.1]: 
2018-06-30T11:58:40.305603+00:00 app[web.1]: > bookworm-api@1.0.0 build-babel /app
2018-06-30T11:58:40.305605+00:00 app[web.1]: > babel -d ./build ./src -s
2018-06-30T11:58:40.305610+00:00 app[web.1]: 
2018-06-30T11:58:41.146122+00:00 app[web.1]: src/index.js -> build/index.js
2018-06-30T11:58:41.196474+00:00 app[web.1]: src/mailer.js -> build/mailer.js
2018-06-30T11:58:41.242714+00:00 app[web.1]: src/models/Circuit.js -> build/models/Circuit.js
2018-06-30T11:58:41.293304+00:00 app[web.1]: src/models/User.js -> build/models/User.js
2018-06-30T11:58:41.346985+00:00 app[web.1]: src/routes/auth.js -> build/routes/auth.js
2018-06-30T11:58:41.362022+00:00 app[web.1]: src/routes/circuits.js -> build/routes/circuits.js
2018-06-30T11:58:41.380720+00:00 app[web.1]: src/routes/stripe.js -> build/routes/stripe.js
2018-06-30T11:58:41.411474+00:00 app[web.1]: src/routes/users.js -> build/routes/users.js
2018-06-30T11:58:41.423692+00:00 app[web.1]: src/utils/parseErrors.js -> build/utils/parseErrors.js
2018-06-30T11:58:41.508066+00:00 heroku[web.1]: Process exited with status 0
2018-06-30T11:58:41.532442+00:00 heroku[web.1]: State changed from starting to crashed

这是我运行Heroku local web 时的输出

[OKAY] Loaded ENV .env File as KEY=VALUE Format
8:04:38 AM web.1 |  > bookworm-api@1.0.0 build /Users/kylependergast/Desktop/projects/bookworm/bookworm-api
8:04:38 AM web.1 |  > npm run clean && npm run build-babel
8:04:38 AM web.1 |  > bookworm-api@1.0.0 clean /Users/kylependergast/Desktop/projects/bookworm/bookworm-api
8:04:38 AM web.1 |  > rm -rf build && mkdir build
8:04:39 AM web.1 |  > bookworm-api@1.0.0 build-babel /Users/kylependergast/Desktop/projects/bookworm/bookworm-api
8:04:39 AM web.1 |  > babel -d ./build ./src -s
8:04:39 AM web.1 |  src/index.js -> build/index.js
8:04:39 AM web.1 |  src/mailer.js -> build/mailer.js
8:04:39 AM web.1 |  src/models/Circuit.js -> build/models/Circuit.js
8:04:39 AM web.1 |  src/models/User.js -> build/models/User.js
8:04:39 AM web.1 |  src/routes/auth.js -> build/routes/auth.js
8:04:39 AM web.1 |  src/routes/circuits.js -> build/routes/circuits.js
8:04:39 AM web.1 |  src/routes/stripe.js -> build/routes/stripe.js
8:04:39 AM web.1 |  src/routes/users.js -> build/routes/users.js
8:04:39 AM web.1 |  src/utils/parseErrors.js -> build/utils/parseErrors.js
8:04:39 AM web.1 Exited Successfully

这是我的 package.json 文件:

{
  "name": "bookworm-api",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "scripts": {
    "test": "nodemon --exec babel-node -- src/index.js",
    "clean": "rm -rf build && mkdir build",
    "build-babel": "babel -d ./build ./src -s",
    "build": "npm run clean && npm run build-babel",
    "start": "npm run build && node ./build/index.js"
  },
  "engines": {
    "node": "9.4.0"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-eslint": "^8.2.3",
    "babel-preset-env": "^1.7.0",
    "eslint-plugin-jsx-a11y": "^5.1.1",
    "eslint-plugin-prettier": "^2.6.0",
    "nodemon": "^1.17.4"
  },
  "dependencies": {
    "babel-plugin-transform-object-rest-spread": "^6.26.0",
    "bcrypt": "^2.0.1",
    "bluebird": "^3.5.1",
    "body-parser": "^1.18.2",
    "dotenv": "^5.0.1",
    "express": "^4.16.3",
    "jsonwebtoken": "^8.2.1",
    "lodash": "^4.17.10",
    "mongodb": "^3.1.0",
    "mongoose": "^4.11.10",
    "mongoose-unique-validator": "^2.0.1",
    "nodemailer": "^4.6.4",
    "request-promise": "^4.2.2",
    "stripe": "^6.1.1",
    "uuid": "^3.2.1",
    "xml2js": "^0.4.19"
  }
}

这是我的 index.js 文件:

import express from 'express';
import path from 'path';
import mongoose from 'mongoose';
import bodyParser from 'body-parser';
import dotenv from 'dotenv';
import Promise from 'bluebird';

import auth from './routes/auth';
import users from './routes/users';
import circuits from "./routes/circuits";
import stripe from './routes/stripe';

dotenv.config();
const app = express();
app.use(bodyParser.json());
mongoose.Promise = Promise;
mongoose.connect(
  process.env.MONGODB_URI || process.env.MONGODB_URL_DEV_LOCAL,
  {useMongoClient: true});

app.use('/api/auth', auth);
app.use('/api/users', users);
app.use('/api/circuits', circuits);
app.use('/api/stripe', stripe);

app.post('/api/auth', (req, res) => {
  res.status(400).json({ errors: {global: "Invalid Credentials" } });
});

app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'index.html'));
})

var port = process.env.PORT || 8080

app.listen(port || 8080, function(){
  console.log("App is running on port " + port);
});

这是我的 Procfile

web: npm run build

我确定其他人也遇到了这个问题,但我一直无法找到建议下一步采取什么措施的资源。如果您可以向我指出相关资源或自己提供答案,将不胜感激!

【问题讨论】:

    标签: node.js express heroku


    【解决方案1】:

    您的Procfile 似乎已定义为您在开始该过程时正在构建东西。构建成功(返回 0),但随后进程停止,Heroku 认为这是一种不好的情况,导致 Web 服务器不应该停止。

    您需要在 Heroku 中实际运行 Web 服务器。类似于web: npm run start


    虽然我会将构建和运行阶段分开。您应该在本地或构建机器上进行构建(或构建服务,例如 Travis、Circle 等——它们也具有 Heroku 集成),然后将编译的内容推送到 Heroku。所以Procfile 只能是web: node ./build/index.js 或类似的东西。

    【讨论】:

    • 嗨霍里亚,是的,你是对的!这是我的一个简单错误,但感谢您指出这一点。我的 procfile 中的 npm run start 对我有用。
    猜你喜欢
    • 2017-11-27
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 2014-08-25
    • 2018-01-25
    • 1970-01-01
    • 2020-08-01
    相关资源
    最近更新 更多