Node.js는 파일을 열 수 없습니다. 오류 : ENOENT, 통계 './path/to/file'


126

내 컴퓨터에서 Express 프레임 워크를 사용하여 node.js 프로그램을 개발했으며 불만없이 정상적으로 실행됩니다.

그러나 SUSE Studio 어플라이언스에서 프로그램을 실행하려고하면 파일 상호 작용시 오류가 발생합니다.

Error: ENOENT, stat './path/to/file'

파일 권한이 올바른지 확인했습니다. 내 컴퓨터와 어플라이언스가 중요한 경우 다른 버전의 노드를 실행하고 있습니다.

이견있는 사람?


1
경로는 상대적이므로 다른 디렉토리에서 실행 중입니까? 경로를 어떻게 생성하고 디렉토리 구조는 무엇입니까? 그리고 어떻게 노드를 실행하고 있습니까?
loganfsmyth

1
고맙습니다, 예, 다른 디렉토리에서 스크립트를 실행하고 있었고 파일 경로가 스크립트 자체와 관련이 있다고 어리석게 가정했습니다. 나는이 :) 같은 단순 알고 있었다

고칠 수 있어야합니다. 경로를 만드는 방법과 해결 방법을 보여주는 코드를 추가 할 수 있습니까? 당신이 특정 파일에 상대적 할 경우, 일반적으로 당신이 할 것__dirname + 'path/to/file';
loganfsmyth

그래, 내가 지금 한 일이야 "node ~ / path / to / script.js"를 실행하여 스크립트를 실행하고 있으며 스크립트에서 파일에 대한 상대 참조가 "~ / path / to"로 해석 될 것으로 예상합니다. 감사합니다!

답변:


187

a .로 지정된 경로 는 스크립트 파일이 아닌 현재 작업 디렉토리를 기준으로합니다. 따라서 실행하면 파일을 찾을 수 node app.js있지만 실행하면 찾을 수 없습니다 node folder/app.js. 이것에 대한 유일한 예외는 모듈 당 존재하므로 어떤 모듈에서 호출되는지 알고 require('./file')있기 때문에 가능 require합니다.

스크립트를 기준으로 경로를 만들려면 __dirname변수 를 사용해야합니다 .

var path = require('path');

path.join(__dirname, 'path/to/file')

또는 잠재적으로

path.join(__dirname, 'path', 'to', 'file')

11
감사; 때로는 초보자와 같은 문서에서 찾기 어려운 작은 것들이 있습니다.

5

여기 app.js를 사용하는 코드

입력은 파일 이름을 지정합니다

res.download(__dirname+'/'+input);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.