2014-11-09 3 views
0

내 응용 프로그램의 NodeJitsu 폴더 구조는 다음과 같습니다 (예 : jitsu deploy 일 때 "server.js"가 포함 된 폴더에 있음) 즉, "서버"폴더).NodeJitsu 오류 : ENOENT, stat '/ opt/run/snapshot/

Root server 
     |___server.js 
     |___package.json 
     client 
     |___www 
      |___index.html 
       |___css 
       |___js 
       |___etc. 

그래서 루트에는 "server.js"라는 시작 스크립트가 들어있는 폴더 "server"가 있습니다. 그러면 "client"라는 폴더가 있는데, "server"와 평행하게 "www"라고 불리는 폴더가 있고 "www"안에는 "index.html"이 있습니다.

app.get(‘/’, function(req,res) 
{ 
    var aPath = path.resolve(“../client/www/”, “index.html”); 
    res.sendFile(aPath); 
}); 

나는 app.use(express.static(__dirname + '/somefolder')가없는 : 내 "server.js"파일에서

, 나는 다음과 같은 코드가 있습니다. 나는 응용 프로그램을 시작할 때, 나는이 오류가 :

Error: ENOENT, stat '/opt/run/snapshot/client/www/index.html' 

process.cwd()/opt/run/snapshot/package입니다. 분명히 위의 경로는 "index.html"이있는 위치를 가리키고 있지 않습니다. 그러나 나는 path.resolve(…)을 "index.html"을 가리켜 야한다고 생각했습니다. 문제가 어디 있는지 알 수 없습니다. "server.js"가 루트에 있다면 "client/www/index.html"에있는 "index.html"을 얻으려면 "../client/www"라고 써야합니다. excuting script에 "index.html"에 가야합니다.

경로가 올바르게 설정되지 않은 부분에 대한 통찰력이 있습니까? /opt/run/snapshot/은 무엇을 가리켜 야합니까? 또는 정확하게 "index.html"을 가리 키도록 get(‘/’) 처리기에서 어떤 변경을해야합니까?

편집

내가 잘못 폴더 구조를 그렸습니다. 이제는 맞습니다.

또한 app.get()을 해제하고 app.use(express.static(__dirname + '/../client/www/')을 켰습니다. 그러나 아무 소용이 : 지금 나는 Cannot GET / 오류가 발생합니다.

"server.js"파일을 주로 클라이언트에 대한 AngularJS HTML 파일, 교환 원 이미지, 스타일 시트 등을 제공하는 노드 서버로 설정하는 것이 궁극적입니다. " 폴더. 이것은 서버의 주요 역할이며, 매우 훌륭한 Satellizer 모듈을 사용하여 앱의 사용자를 인증하는 역할을합니다. 그리고 그게 다야. 나는 MongoDB를 첨부했다. 그러나 그렇지 않으면 매우 일반적이며 솔직한 Node.js 서버 애플리케이션이다.

감사합니다.

// notice no leading/which is root. __dirname should be the dir of current file running 
var staticPath = path.resolve(__dirname, '../client/www'); 
console.log(staticPath); 

그런 다음 express.static

app.use(express.static(staticPath); 

로 되었 아마 레이아웃과 생성 명시의 규칙을 따르는 것이 좋습니다 것입니다 :

+1

로컬로 작업하고 있습니까?귀하의 클라이언트와 WWW는 대문자이므로 대소 문자가 아닌지 확인하십시오. – laggingreflex

답변

1

해결, 응원하지 않고 그것을 시도하고 한 번 확인에 로그 아웃 루트 아래의 앱과 정적 인 파일이있는 앱

/public 
    <static files> 
app.js 

그런 다음 생성 된 앱에서 수행하는 작업 수행 :

app.use(express.static(path.join(__dirname, 'public'))); 
+0

OK, thanks, bryanmac; 나는 너의 제안을 시도 할 것이다. 고맙습니다! – Lew

+0

이러한 변경 후에 __dirname은 "/ opt/run/snapshot/package"이고 staticPath를 사용하면 새 경로는 staticPath = '/ opt/run/snapshot/client/www'가됩니다. staticPath = '/ opt/run/snapshot/package/client/www'여야합니다. 하지만 - 작동합니다! 다시 한번 고마워요. 시간을 내 주셔서 감사합니다. – Lew

+0

완료. 다시 한 번 감사드립니다! – Lew