0

我很新node.js,我只是按照步骤创建了一个简单的 node.js 应用程序。这是在github上

jitsu deploy从终端运行命令将其部署在上面nodejitsu,但是我在这里遇到了这个错误,请任何关于代码文件可能有问题的帮助? 这是 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>
4

2 回答 2

0

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

于 2013-06-03T18:02:58.323 回答
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);
};

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

于 2013-06-07T02:38:56.837 回答