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 서버가 작동하는 이유입니다). 이것은 나를 당혹스럽게 혼란스럽게 만든다. 그게 버그 야?
들어오는 요청은 스크립트의 두 번째 버전에서 주 모듈을 다시 실행할 것입니다. "if (module === require.main)"라고 쓰는 이유가 있습니다. http://ringojs.org/tutorial/httpserver.md – oberhamsi
@oberhamsi - 'module.exports가 아닌가요?' '메모로 저장하고 캐시에 저장합니까? AFAIK 같은 모듈을 두 번 요구한다면 그것은 한 번만 실행될 것입니다. –
@oberhamsi - 동의 할 수 있도록 답변으로 의견을 작성 하시겠습니까? –