2013-06-20 3 views
15

Heroku를 사용하여 NodeJs 응용 프로그램을 배포하고 있습니다. 정적 파일을 제공하는 작은 문제 외에는 모든 것이 잘 작동합니다.Heroku의 Nodej를 배포하면 하위 폴더에있는 정적 파일을 제공하지 못합니다.

나는 다음과 같은 구성

app.use(express.static(__dirname + '/htdocs')); 

그것은 내가 하위 폴더에있는 정적 파일을 제공 할 때를 제외하고 잘 작동 있습니다.

www.example.com/bar.js //이 제공하는 파일은

www.example.com/foo/bar.js //이이를 찾을 수 /htdocs/bar.js 잘 작동 내가 내 로컬 환경 모두에 그 말을 잊었 /htdocs/foo/bar.js

파일, Heroku가 뭔가 수 있습니다하지만 난 그 이유를 찾을 수 없습니다. 누군가이 문제가 있었나요? 솔루션?

감사합니다.

답변

12

마지막으로 해결책을 찾았습니다.

나는 내 package.json에 npm 버전을 추가하는 것으로 해결했습니다.

{ 
    "name": "bla", 
    "version": "0.0.1", 
    "dependencies": { 
     "express": "3.2.6" 
    }, 
    "engines": { 
     "node": "0.10.11", 
     "npm": "1.2.25" 
    } 
} 
+2

아직 내 문제를 해결하지 못했습니다 ... –

10

이 질문에서 설명하는 것처럼 : Heroku(Cedar) + Node + Express + Jade Client-side javascript files in subdirectory work locally with foreman+curl but not when pushed to Heroku, __dirname을 Heroku와 함께 사용할 수는 없습니다.

대안이 될 것으로 보인다 :

// 당신의 web.js
process.env.PWD = process.cwd()

// 그런 다음
응용 프로그램의 상단에. 사용 (express.static (process.env.PWD + '/ htdocs'));

+0

안녕하세요! 나는 이미 그것을 발견했고 일하지 않았다. .. 그러나 나는 실제로 soultion를 발견했다! !! 그냥 내 패키지 였어 .Json, npm 버전을 넣는 걸 깜빡했는데, 왜 그런지 모르지만이 모든 일이 해결된다. 감사! – ius

+0

오케이. 좋은 소식 ! –

+0

NPM의 올바른 버전을 다운로드하려면 Heroku가 필요하기 때문입니다. 그리고 기본적으로 아주 오래된 것을 다운로드해야합니다.우리는 그때 무슨 일이 있었는지 모른다 : –

0

내가 잠시 동안 고투하고 정적 폴더로 (DIST /에서)/대중를 사용하여 복귀했다 - 내 경우에는 지금

0

완벽하게 작동, 내 빌드에서 단계를했다 실제로는 /public 폴더를 지우고 bundle.ss와 bundle.css를 다시 추가합니다.

그래서 내 지역에서는 볼 수 없었지만 Heroku에 배치되었을 때 자산이 누락되었습니다.

5

해결 방법이 하나도 없으면 my solution을 확인하십시오.

디렉토리의 하위 디렉토리가 Git 저장소에 추가되었는지 확인하십시오.

+2

이 나를 위해 일했습니다. .gitignore에서/dist 디렉토리를 무시했습니다. 그것을 제거하고 정적 파일 링크가 예상대로 작동했습니다. – mepler

+0

나 같은데, 지금 나는 .gitignores가하는 일을 안다 : P – John