파일을 찾기 위해 부모 2 레벨로 돌아가려면 어떻게 작성합니까?
fs.readFile(__dirname + 'foo.bar');
답변
이 시도:
fs.readFile(__dirname + '/../../foo.bar');
상대 경로의 시작 부분에 슬래시가 있습니다.
답변
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()
선행 / 후행 슬래시를 처리하고 올바른 작업을 수행하며 후행 슬래시가 존재하는 시점과 그렇지 않은 경우를 기억하려고 할 필요가 없습니다.
답변
나는 그것이 까다 롭다는 것을 알고 있지만, 지금까지의 모든 대답은 옳지 않습니다.
path.join ()의 요점은 호출자가 사용할 디렉토리 분리자를 알 필요가 없도록하는 것입니다 (코드 플랫폼을 무시 함).
기술적으로 정답은 다음과 같습니다.
var path = require("path");
fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));
나는 이것을 Alex Wayne의 답변에 대한 주석으로 추가했지만 충분한 담당자는 아닙니다!
편집 : 사용자에 따라 1767586의 관찰
답변
답변
path
모듈 이 필요한 것 같습니다 . ( path.normalize
특히)
var path = require("path"),
fs = require("fs");
fs.readFile(path.normalize(__dirname + "/../../foo.bar"));
답변
다른 모듈이 당신을 호출하고 여전히 실행중인 메인 파일의 위치를 알고 싶다면 @Jason 코드의 수정을 사용할 수 있습니다 :
var path = require('path'),
__parentDir = path.dirname(process.mainModule.filename);
fs.readFile(__parentDir + '/foo.bar');
그렇게하면 실제로 실행중인 스크립트의 위치를 얻을 수 있습니다.
답변
부모님이 어디에 있는지에 대해 긍정적이지 않다면 경로를 알려줄 것입니다.
var path = require('path'),
__parentDir = path.dirname(module.parent.filename);
fs.readFile(__parentDir + '/foo.bar');