2012-12-31 2 views
0

RingoJS에서 매우 이상한 문제가 발생했습니다. main.js에 저장된 다음 코드를 고려하십시오 ringo main.js 시작 기본을 notfound 페이지를 표시 예상대로 http://localhost:8080/에 HTTP 서버를 실행RingoJS httpserver가 BindException을 throw합니다.

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); 

.

지금 것을 제외하고 내가 하드 코딩, 상기와 동일 다음 코드를 고려 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 서버를 시작하지만, 사이트를 열기에 나와 있습니다 notfound 페이지 대신 error 페이지가 표시됩니다. 그것은 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 – oberhamsi

+0

@oberhamsi - 'module.exports가 아닌가요?' '메모로 저장하고 캐시에 저장합니까? AFAIK 같은 모듈을 두 번 요구한다면 그것은 한 번만 실행될 것입니다. –

+0

@oberhamsi - 동의 할 수 있도록 답변으로 의견을 작성 하시겠습니까? –

답변

1

요청이 들어 오면 스크립트의 두 번째 버전에서 기본 모듈이 다시 실행됩니다. 우리가 "if (module === require.main)"라고 쓰는 이유가 있습니다.이 페이지 하단을보십시오 : http://ringojs.org/tutorial/httpserver.md

관련 문제