답변:
이 시도:
fs.readFile(__dirname + '/../../foo.bar');
상대 경로의 시작 부분에 슬래시가 있습니다.
__dirname
뭔가가 있다고 가정하고 있습니다. '/foo/bar'
'/foo/bar/'
__dirname
처럼 보일 수 있습니다 /path/to/your/dir
당신이 말한다면, __dirname + ".."
그것이 /path/to/your/dir..
보다는, 존재하지 않는 디렉토리 인 /path/to/your
. 슬래시가 중요합니다.
path.join 사용 http://nodejs.org/docs/v0.4.10/api/path.html#path.join
var path = require("path"),
fs = require("fs");
fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));
path.join()
선행 / 후행 슬래시를 처리하고 올바른 작업을 수행하며 후행 슬래시가 존재하는 시점과 그렇지 않은 경우를 기억하려고 할 필요가 없습니다.
__dirname
있었다 host/src/folder
나는 필요 host/folder
이것은 나를 위해하지 영업 대답을했다.
path.join(__dirname, '..', '..', 'foo.bar')
나는 그것이 까다 롭다는 것을 알고 있지만, 지금까지의 모든 대답은 옳지 않습니다.
path.join ()의 요점은 호출자가 사용할 디렉토리 분리자를 알 필요가 없도록하는 것입니다 (코드 플랫폼을 무시 함).
기술적으로 정답은 다음과 같습니다.
var path = require("path");
fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));
나는 이것을 Alex Wayne의 답변에 대한 주석으로 추가했지만 충분한 담당자는 아닙니다!
편집 : 사용자에 따라 1767586의 관찰
가장 쉬운 방법은 다음을 사용하는 것입니다 path.resolve
.
path.resolve(__dirname, '..', '..');
../
경로 에 가입하여 폴더를 확인할 필요가 없으므로 올바른 해결책
path
모듈 이 필요한 것 같습니다 . ( path.normalize
특히)
var path = require("path"),
fs = require("fs");
fs.readFile(path.normalize(__dirname + "/../../foo.bar"));
fs.readFile(__dirname + '/../../foo.bar');
그것을 시도했지만 방금 그랬고 효과가있었습니다.