我正在尝试在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);
答案 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"
}
我在env上测试了项目并将其部署在heroku上,启动脚本运行正常。 在部署过程中你肯定错过了一些步骤,没有日志就很难说。
无论如何,按照这些步骤,您应该能够部署该应用程序。
如果您还没有完成,则必须安装redis插件 你的heroku实例。
下载并安装heroku CLI here, 从命令行运行 heroku插件:创建heroku-redis:hobby-dev -a
这将创建带有爱好开发计划的REDIS插件(它是免费的)。 一旦运行此命令,它将在中打印一条指令 控制台,用于查看redis插件创建的进度。
类似使用heroku addons:info redis-curly-19008来检查 创造进展'
创建插件后,您应该会在应用中看到 Heroku上的设置,它还添加了一个新的env变量 REDIS_URL。
node_modules 文件夹不应该在您的仓库中,npm 安装时,heroku会自动安装模块 应用程序,在本地安装它只需运行命令 来自根项目的 npm install 。
为了避免提交您不想要的内容,请创建一个文件 在项目根目录中调用 .gitignore 并添加以下内容 含量:
/node_modules npm-debug.log .DS_Store /*.env /*.env.* /.project /.settings
由于您使用github作为存储库,因此请提交项目更改 并部署
我建议您点击 this guide 了解更多详情