HttpoJS RingoJS выбрасывает BindException
Я столкнулся с очень странной проблемой в 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-сервер на http://localhost:8080/
как и ожидалось, отображение по умолчанию 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 ответ
Поступающий запрос повторно выполнит ваш основной модуль во второй версии вашего скрипта. есть причина, по которой мы пишем "if (module === require.main)", см. внизу этой страницы: http://ringojs.org/tutorial/httpserver.md