同一个heroku实例上的html和node.js脚本

时间:2013-02-21 13:34:54

标签: html node.js heroku

我正在努力让一些非常简单的东西与node.js一起使用,而且我现在还有点卡住了。希望有人可以帮助我解决这个问题..我正在尝试一个非常简单的node.js应用程序..基本上有一个index.html文件,其中有一个名称作为参数的表单..按钮的onclick调用一个JQuery脚本使用从html表单获取的NAME值对node.js脚本执行POST请求。       现在对node.js脚本发出post请求,该脚本在其默认端口上运行HTTP服务器。所有node.js脚本都接受该参数并回复一个非常简单的响应,其中包括发送的POST参数..这个响应被JQuery捕获并使用alert给用户。      所以我有index.html和login.js作为我的两个脚本..现在我使用heroku来托管这些文件..问题是,一旦他们上传它默认情况下没有真正打开html文件..它运行login.js默认情况下......因为HTML永远不会被打开..这可能是因为我有一个procfile将login.js加载到dyno ..但是如果我删除procfile然后我在日志中收到一条错误,说“没有运行web进程” ..      所以基本上,长话短说,有没有办法让index.html和node.js文件在同一个heroku实例上运行,其中html请求node.js获取信息并将其返回..       这是我的html和node.js脚本的链接

https://dl.dropbox.com/u/904687/index.html https://dl.dropbox.com/u/904687/login.js

1 个答案:

答案 0 :(得分:1)

一种选择是使用Node.js Express.js来提供html文件,然后还处理登录路由。

整个事情看起来像。

file:package.json

{
  "name" : "LoginPage",
  "version" : "0.0.1",
  "dependencies" : {
    "express" : "3.x"
  },
  "main" : "index.js"
}

file:index.js

var express = require('express');
var app = express();

var oneDay = 86400000;

app.use(express.compress());

app.use(express.static(__dirname + '/public', { maxAge: oneDay }));

app.use(express.bodyParser());

app.listen(process.env.PORT);

app.post('/', function(req, res){
  var result = req.rawBody;
  res.send("hello there world data is " + result);
});

目录结构

package.json
index.js
public
  index.html