2012-02-13 3 views
7

그래서이 간단한 호출을 OS X 10.6.8의 node.js v0.6.7에서 가짜 경로로 실행하면 예상대로 오류가 발생합니다. 왜 errno 34와 코드가 일치하지 않는가 ENOENT

var fs = require("fs"); 
fs.stat("/tmp/foo", function(error, stat) { 
    return console.log(error); 
}); 

그것은

이 출력을 인쇄 :

{ [Error: ENOENT, no such file or directory '/tmp/foo'] errno: 34, code: 'ENOENT', path: '/tmp/foo' } 

내 질문입니다, 내 시스템에 /usr/include/sys/errno.h에 따라, ENOENT 코드 2가 있어야합니다, 그래서 왜이 오류가 errno.h의 errno를 34 (ERANGE을 말하고있다),하지만 ENOENT의 오류 메시지와 페어링 하시겠습니까? 윈도우 및 유닉스 하에서 에러 조건에 대한 일반적인 표현을 달성하기

답변

8

Node.js를 시스템에게 내부 "된 errno"(a 매핑 deps/uv/src/unix/error.c 또는 deps/uv/src/win/error.cdeps/uv/include/uv.huv_translate_sys_error 참조) errno S 변환한다.

34는 ENOENT의 node.js-errno이므로 모든 항목이 정상입니다.

+7

정말 감사합니다. 감사합니다. 그렇다면 왜''('상수') ENOENT' 2를보고해야합니까? 노드의 오류를 가져 오는 또 다른 방법이 있습니까? –

+1

조금 늦었지만 다른 사람들에게 도움이 될 수 있습니다. errnos가 노드에 노출되지 않은 것으로 보입니다. npm 모듈 [errno-codes] (https://npmjs.org/package/errno-codes)을 사용하여 errnos에 대한 미리 정의 된 상수를 얻을 수 있습니다. – basti1302

+0

나는 이것이 nodejs 버그라고 맹세한다. 문서별로 '-2'여야합니다. https://nodejs.org/api/errors.html#errors_error_errno – Pacerier

-2

아직/tmp/foo 폴더를 만들지 않았으므로 해당 폴더를 찾고 있습니다. (내 코드에 몇 줄의 오류 처리 줄을 추가하면 콘솔에 동일한 오류 코드가 표시되고 그 이유는

+0

질문을주의 깊게 읽습니다 (그는 이미 디렉토리가 존재하지 않음을 알고 있습니다). –

4

node.js가 errno을 0.12.0으로 변경 한 것처럼 보입니다. 내 이미지를 저장할 디렉토리를 아직 만들지 않았습니다. ENOENT은 현재 -2입니다.

code === 'ENOENT'

관련 문제