heroku node js redis出错

时间:2017-11-30 22:05:44

标签: javascript node.js heroku redis

我正在尝试在heroku上部署应用程序,但我遇到了一些错误。 这是我的应用程序日志。我该如何解决这个问题?

2017-11-30T21:25:51.461297+00:00 app[web.1]: 
2017-11-30T21:25:51.453647+00:00 app[web.1]: npm ERR! Failed at the redisExample@1.0.0 start script.
2017-11-30T21:25:51.453488+00:00 app[web.1]: npm ERR!   
2017-11-30T21:25:51.453823+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2017-11-30T21:25:51.453192+00:00 app[web.1]: npm ERR! Exit status 1
2017-11-30T21:25:51.461495+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2017-11-30T21:25:51.461625+00:00 app[web.1]: npm ERR!     /app/.npm/_logs/2017-11-30T21_25_51_455Z-debug.log
2017-11-30T21:25:51.575216+00:00 heroku[web.1]: Process exited with status 1
2017-11-30T21:25:51.589604+00:00 heroku[web.1]: State changed from starting to crashed
2017-11-30T21:25:52.424042+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=calm-bastion-97639.herokuapp.com request_id=e2e56b20-6479-4e14-8199-f2aba1a72ab5 fwd="74.214.48.190" dyno= connect= service= status=503 bytes= protocol=https
2017-11-30T21:25:52.503819+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=calm-bastion-97639.herokuapp.com request_id=4adab6fa-0e19-446b-bc0d-7a7bc0f4e5c5 fwd="74.214.48.190" dyno= connect= service= status=503 bytes= protocol=https

我的package.json文件的内容是

{
  "name": "redisExample",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "*",
    "ejs": "^2.4.2",
    "express": "^4.16.2",
    "morgan": "*",
    "redis": "^2.8.0"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/ashpixar/redisExample.git"
  },
  "keywords": [],
  "bugs": {
    "url": "https://github.com/ashpixar/redisExample/issues"
  },
  "homepage": "https://github.com/ashpixar/redisExample#readme"
}

我的js文件是     const express = require(' express')     const app = express()

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

app.listen(process.env.PORT || 8080, () => console.log('all is ok'));

const redis = require('redis')
var client = redis.createClient(process.env.REDIS_URL);

1 个答案:

答案 0 :(得分:0)

当未指定procfile时,heroku通过执行npm start来加载nodejs应用程序。

你的package.json没有" start"脚本。

尝试在package.json中添加启动脚本

 "scripts": {
    "start": "node index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  }

Heroku Procfile documentation

我在env上测试了项目并将其部署在heroku上,启动脚本运行正常。 在部署过程中你肯定错过了一些步骤,没有日志就很难说。

无论如何,按照这些步骤,您应该能够部署该应用程序。

  1. 如果您还没有完成,则必须安装redis插件 你的heroku实例。

    下载并安装heroku CLI here, 从命令行运行 heroku插件:创建heroku-redis:hobby-dev -a

    这将创建带有爱好开发计划的REDIS插件(它是免费的)。 一旦运行此命令,它将在中打印一条指令 控制台,用于查看redis插件创建的进度。

    类似使用heroku addons:info redis-curly-19008来检查 创造进展'

    创建插件后,您应该会在应用中看到 Heroku上的设置,它还添加了一个新的env变量 REDIS_URL。

  2. node_modules 文件夹不应该在您的仓库中,npm 安装时,heroku会自动安装模块 应用程序,在本地安装它只需运行命令 来自根项目的 npm install

    为了避免提交您不想要的内容,请创建一个文件 在项目根目录中调用 .gitignore 并添加以下内容 含量:

    /node_modules
    npm-debug.log
    .DS_Store
    /*.env
    /*.env.*
    /.project
    /.settings
  3. 由于您使用github作为存储库,因此请提交项目更改 并部署

  4. 观察日志,部署完成后,访问网址 你的应用。 它应该是这样的: 的 https://yourappname.herokuapp.com/
  5. 我建议您点击 this guide 了解更多详情