Nodejitsu同时启动node.js应用程序

时间:2013-06-03 15:33:49

标签: node.js nodejitsu

我对node.js很新,我只是按照步骤创建一个简单的node.js应用程序。 Here it is on github

我从终端运行命令jitsu deploy以将其部署在nodejitsu上,但是我在这里遇到了这个错误,请问有关代码文件可能出错的任何帮助吗?     Here is the code on git hub

这是出现的错误:

prompt: Is this ok?:  (yes) yes
info:    Creating snapshot 0.0.0-5
info     Uploading: [=============================] 100%
info:    Updating app test
info:    Activating snapshot 0.0.0-5 for test
info:    Starting app test
error:   Error running command deploy
error:   Nodejitsu Error (500): Internal Server Error
error:   There was an error while attempting to deploy the app
error:
error:   Error spawning drone
error:   Script took too long to listen on a socket
error:
error:   This type of error is usually a user error.
error:   Error output from Haibu:
error:
error:   Error: Error spawning drone
error:       at Object.onTimeout [as _onTimeout] (/root/haibu-orchestra/node_mod
ules/haibu/lib/haibu/core/spawner.js:396:15)
error:       at Timer.list.ontimeout (timers.js:101:19)
help:    For help with this error contact Nodejitsu Support:
help:      webchat: <http://webchat.nodejitsu.com/>
help:          irc: <irc://chat.freenode.net/#nodejitsu>
help:        email: <support@nodejitsu.com>

2 个答案:

答案 0 :(得分:0)

你是server.js正在导出一个函数,但是没有运行。只需将start的主体作为顶层代码直接放在server.js模块中,以便在nodejitsu启动应用程序时执行。

答案 1 :(得分:0)

Nodejitsu非常挑剔你的部署在系统上的监听速度。在部署被视为失败之前,部署开始和部署结束之间存在一定的时间范围。当它没有长时间监听端口时,它最终会给你这个错误。

为什么不尝试在start中创建HTTP套接字,然后将其传递到index.js函数,而不是使用当前的start函数,因为你是已经将路线和handle传递给它了吗?

例如,在index.js

var http = require('http'),
    server = http.createServer().listen(8080);

start(server, router.route, handle);

然后,您可以使用以下内容,而不是在http.createServer(onRequest).listen(8080)文件中使用server.js

var start = function (server, route, handle) {
  function onRequest(request, response) {
    /* Your request stuff here */
  }
  server.on('request', onRequest);
};

这很可能会解决整个问题。