2014-03-26 3 views
5

heroku에서 NodeJS를 사용하고 있습니다.heroku에서 저장된 파일을 읽을 수 없습니다.

다른 서버에서 파일을 읽은 다음이를 내 응용 프로그램의/temp 디렉토리에 저장합니다. 다음으로, 동일한 파일을 읽고 클라이언트에게 전달합니다.

파일을 저장 한 다음 나중에 그것이 읽는 코드 : 이것은 내 로컬 호스트에서 잘 작동

http.request(options, function (pdfResponse) { 
    var filename = Math.random().toString(36).slice(2) + '.pdf', 
     filepath = nodePath.join(process.cwd(),'temp/' + filename); 

    pdfResponse.on('end', function() { 
     fs.readFile(filepath, function (err, contents) { 
      //Stuff to do after reading 
     }); 
    }); 

    //Read the response and save it directly into a file 
    pdfResponse.pipe(fs.createWriteStream(filepath)); 
}); 

. 나는 경로가 올바르게 사용되도록 process.cwd()을 사용하고

events.js:72 
throw er; // Unhandled 'error' event 
Error: ENOENT, open '/app/temp/nvks0626yjf0qkt9.pdf' 
Process exited with status 8 
State changed from up to crashed 

: Heroku가에 배포 할 때

그러나, 나는 다음과 같은 오류가 발생합니다. 그러나 그때조차도 도움이되지 않았습니다. heroku 문서에 따라, 나는 지금하고있는 applications 디렉토리에 파일을 만들 수있다. 그러나 이것이 파일을 읽지 못하는 이유를 알 수는 없습니다 ...

답변

10

설명하는 오류는 /app/temp/과 일치하지 않습니다. 작성을 시작하기 전에 작성해야합니다. 아이디어는 다음과 같습니다.

그림의 목적으로 만 동기화 버전을 사용했습니다. 이 코드는 각 요청에 대해 호출되는 대신 앱의 시작 코드의 일부 여야하며 특정 애플리케이션에 따라 구조화해야하는 방식입니다.

+0

정확합니다. 사실, 내가 로컬로 파일을 만들었지 만 나는 내 자식 커밋에 추가하지 않은 것 같아! – callmekatootie

+0

내 빌드에서 로컬 (임시) 임시 폴더가 있었지만 왜 heroku에서 생성되지 않았는지 알 수 없습니다. 이것은 내 문제를 해결했습니다! – vonwolf

+0

@vonwolf 폴더의 내용을 무시하는 규칙으로'.gitignore'처럼 그 폴더에 뭔가를 추가하십시오. 그래서 더 이상 비어 있지 않고 서버에 생성 될 것입니다. –

관련 문제