我对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>
答案 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);
};
这很可能会解决整个问题。