RingoJS httpserver抛出BindException

时间:2012-12-31 16:32:36

标签: javascript httpserver ringojs

我在RingoJS遇到了一个非常奇怪的问题。请考虑以下main.js中保存的代码:

var {Application} = require("stick");
var {main} = require("ringo/httpserver");
var app = exports.app = new Application;
app.configure("error", "notfound");
if (module === require.main)
    main(module.id);

正在运行ringo main.js按预期启动http://localhost:8080/上的http服务器,显示默认的notfound页面。

现在考虑以下代码,除了我将if条件硬编码为true之外,其他代码与上面相同:

var {Application} = require("stick");
var {main} = require("ringo/httpserver");
var app = exports.app = new Application;
app.configure("error", "notfound");
if (true) main(module.id);

正在运行ringo main.js启动http服务器,但在打开网站时,它会为我提供error页面,而不是notfound页面。它说Wrapped java.net.BindException: Address already in use并给我以下堆栈跟踪:

at ringo/httpserver.js:327 (Server)
at ringo/httpserver.js:428 (init)
at ringo/httpserver.js:506 (main)
at /home/aaditmshah/main.js:5
at ringo/jsgi/connector.js:28 (handleRequest)

发生了什么事? if条件如何影响服务器?毕竟两个条件都表达了值true(这就是http服务器工作的原因)。这让我感到非常困惑。这是一个错误吗?

1 个答案:

答案 0 :(得分:1)

进入的请求将在脚本的第二个版本中重新执行主模块。我们写“if(module === require.main)”的原因,请参见本页底部:http://ringojs.org/tutorial/httpserver.md