Heroku Node.js错误heroku [路由器]:at =错误代码= H10 desc =" App崩溃" method = GET path =" /"

时间:2016-04-01 21:19:18

标签: node.js git express heroku

我试图将我的CRUD Node应用程序部署到Heroku,并且无法发送索引页面甚至开始。我已经注释了应用程序中处理API的所有内容,只是想提供索引页面,但由于某种原因无法这样做。

注意,我现在没有使用也不想使用像EJS这样的任何类型的渲染引擎。

目录结构:

/invoicr (root)
  package.json
  Procfile
  server.js
  /client
    index.html

的package.json

{
  "name": "invoicr",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "start": "node server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "body-parser": "^1.15.0",
    "express": "^4.13.4",
    "mongoose": "^4.4.7"
  }
}

Procfile (不确定我是否需要这个,因为package.json有脚本启动命令)

web: node server.js

server.js

var port = Number(process.env.PORT || 3000);
var express = require('express');
var app = express();

app.use(express.static(__dirname + '/client'));    
app.get('/', function(req, res){
  res.sendFile('/index.html'); //I've tried playing around with the path multiple ways and still get errors
});

app.listen(port);

我能够得到一个简单的回复:

var server = http.createServer(function(req, res){
  res.writeHead(200, {'Content-Type':'text/html'});
  res.end('<h1>World</h1>');
}); 
server.listen(port);

但是一旦我评论出var server = ...并尝试提供html文件,我就会收到以下错误: heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=invoicr-test-app.herokuapp.com

部署命令

  • git add .
  • git commit -m "message"
  • git push heroku master
  • heroku ps:scale web=1
  • heroku open

对于我错过或未正确行动的任何帮助,我们将不胜感激,谢谢。

修改

因此,它一直都很简单,看起来我的依赖关系并没有安装,因为我将它们设置为package.json中的dev。感谢大家帮我解决了这个问题。

的package.json

{
  "name": "invoicr",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "start": "node server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.15.0",
    "express": "^4.13.4",
    "mongoose": "^4.4.7"
  }
}

1 个答案:

答案 0 :(得分:0)

默认情况下,heroku不会在devDependencies处安装需要设置为dependencies的代码

来自Heroku:

  

Npm从以...开头的任何环境变量中读取配置   NPM_CONFIG。我们默认设置production = true来安装依赖项   只要。如果您想安装其他devDependencies,则可以   禁用此行为:heroku config:set NPM_CONFIG_PRODUCTION = false