【问题标题】:at=error code=H10 desc="App crashed" method=GET path="/" Error Deploying React/Node to Herokuat=error code=H10 desc="App crashed" method=GET path="/" 将 React/Node 部署到 Heroku 时出错
【发布时间】:2018-07-21 11:21:12
【问题描述】:

我正在尝试部署我正在处理的 React on Node 项目,但遇到了一些问题,我不确定为什么。以下是从日志中提取的一些信息:

2018-02-11T00:12:22.875338+00:00 app[web.1]: > dmdb@1.0.0 start /app
2018-02-11T00:12:22.875340+00:00 app[web.1]: > node server.js
2018-02-11T00:12:22.875341+00:00 app[web.1]: 
2018-02-11T00:12:23.315310+00:00 heroku[web.1]: State changed from starting to crashed
2018-02-11T00:12:23.299113+00:00 heroku[web.1]: Process exited with status 1
2018-02-11T00:13:23.976931+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=dmdb1.herokuapp.com request_id=8d37e10b-6999-4a2f-82bb-f3e724bf1c4e fwd="108.14.98.161" dyno= connect= service= status=503 bytes= protocol=https

根据日志显示的内容,我的 package.json 文件中的启动脚本似乎存在问题,但我不知道为什么,因为我已经成功部署了另一个项目.我对此进行了一些研究,我相信我的 Server.js 文件已配置并且端口设置正确,我删除了 devdependencies 并确认它在本地工作但未部署,并且我已经在 vars 中设置了我的 SECRET_KEY 自从这个已设置身份验证。下面是我设置端口的方式,以及我的 package.json 文件在后端的样子。如果有人可以提供一些见解,我将不胜感激。如果我可以提供任何其他信息,请告诉我,我会尽快提供。

来自 Server.js 的端口:

//app listening on port 1337
const PORT = process.env.PORT || 1337;
app.listen(PORT, () => {
    console.log(`LISTENING ON PORT ${PORT}`)
})

从后端更新了 Package.json:

{
  "name": "dmdb",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js",
    "dev": "nodemon server.js",
    "debugger": "DEBUG=*:* nodemon server.js",
    "prod": "NODE_ENV=production node server.js",
    "deploy": "cd client && yarn build && cp -a ./build/ ../public/",
    "heroku-postbuid" : "cross-env NODE_ENV=production WEBPACK_CONFIG=browser_prod,server_prod webpack --colors",
  },
  "engines": {
    "node": "8.5.0",
    "yarn": "1.3.2"
  },  
  "author": "Dan Levenson",
  "license": "MIT",
  "dependencies": {
    "bcryptjs": "^2.4.3",
    "body-parser": "^1.18.2",
    "cookie-parser": "^1.4.3",
    "cors": "^2.8.4",
    "dotenv": "^4.0.0",
    "ejs": "^2.5.7",
    "ejs-lint": "^0.3.0",
    "express": "^4.16.2",
    "express-session": "^1.15.6",
    "isomorphic-fetch": "^2.2.1",
    "method-override": "^2.3.10",
    "morgan": "^1.9.0",
    "passport": "^0.4.0",
    "passport-local": "^1.0.0",
    "path": "^0.12.7",
    "pg-promise": "^7.0.3"
  }
}

提前致谢!

编辑帖子以包含来自客户端的 Package.JSON:

{
  "name": "client",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^16.2.0",
    "react-dom": "^16.2.0",
    "react-router-dom": "^4.2.2",
    "react-scripts": "1.1.0",
    "reactstrap": "^5.0.0-beta"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "proxy": "http://localhost:3001"
}

添加构建日志:

-----> Node.js app detected
-----> Creating runtime environment

       NPM_CONFIG_LOGLEVEL=error
       NPM_CONFIG_PRODUCTION=true
       NODE_VERBOSE=false
       NODE_ENV=production
       NODE_MODULES_CACHE=true
-----> Installing binaries
       engines.node (package.json):  8.5.0
       engines.npm (package.json):   unspecified (use default)
       engines.yarn (package.json):  1.3.2

       Resolving node version 8.5.0...
       Downloading and installing node 8.5.0...
       Using default npm version: 5.3.0
       Resolving yarn version 1.3.2...
       Downloading and installing yarn (1.3.2)...
       Installed yarn 1.3.2
-----> Restoring cache
       Loading 2 from cacheDirectories (default):
       - node_modules
       - bower_components (not cached - skipping)
-----> Building dependencies
       Installing node modules (yarn.lock)
       yarn install v1.3.2
       [1/4] Resolving packages...
       success Already up-to-date.
       Done in 0.30s.
-----> Caching build
       Clearing previous node cache
       Saving 2 cacheDirectories (default):
       - node_modules
       - bower_components (nothing to cache)
-----> Build succeeded!
-----> Discovering process types
       Procfile declares types -> web
-----> Compressing...
       Done: 20.7M
-----> Launching...
       Released v12
       https://dmdb-1.herokuapp.com/ deployed to Heroku

【问题讨论】:

  • 您如何在 Heroku 上构建您的客户端?根据您发布的内容,Heroku 只会运行您的 npm start 脚本。因此,也许您需要添加一个 heroku-postbuild 脚本来运行您当前在“部署”中拥有的内容?见stackoverflow.com/questions/48531545/…
  • 感谢您的提示,我已尝试添加与您链接的帖子类似的后期构建脚本,但仍然遇到相同的错误。我再次查看了日志,似乎我的某些模型可能无法正确检测到:错误:找不到模块'../../models/user.js' 你认为这可能有某种关联吗?跨度>
  • 请为服务器和客户端目录发布您更新的 package.jsons。
  • 抱歉耽搁了,刚刚发布了更新。
  • 您的 package.json 脚本中有错字:“heroku-postbuid”应该是“heroku-postbuild”。修复该问题后,如果仍有问题,请发布构建日志。

标签: json node.js reactjs heroku


【解决方案1】:

此解决方案适用于 GO

当您通过 heroku 部署应用程序时,它不允许您指定 端口号
换句话说,您不能将 Web 服务的 端口 号指定为 8000 或其他值,heroku 在运行时决定端口号。
所以,你不能使用下面的代码:

    log.Fatal(http.ListenAndServe(":8000", router))

您可以做的是,获取 heroku 的运行时端口。
简而言之,只需使用以下代码

    log.Fatal(http.ListenAndServe(":" + os.Getenv("PORT"), router))

【讨论】:

    【解决方案2】:

    使用 NPM 而不是 Yarn 重建了应用程序,它部署没有问题,现在运行良好。感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 2020-04-28
      • 2021-10-22
      • 2015-03-01
      • 2013-03-30
      • 2018-04-09
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多