我试图将我的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"
}
}
答案 0 :(得分:0)
默认情况下,heroku不会在devDependencies
处安装需要设置为dependencies
的代码
来自Heroku:
Npm从以...开头的任何环境变量中读取配置 NPM_CONFIG。我们默认设置production = true来安装依赖项 只要。如果您想安装其他devDependencies,则可以 禁用此行为:heroku config:set NPM_CONFIG_PRODUCTION = false