2014-11-09 79 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」,包含啓動腳本「server.js」。然後有一個名爲「客戶端」的文件夾,與「服務器」平行,其中有一個名爲「www」的文件夾,在「www」內是主要的「index.html」。

在我的「server.js」的文件,我有以下代碼:

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

我沒有app.use(express.static(__dirname + '/somefolder')。當我啓動應用程序,我得到這個錯誤:

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」,相對的轉到腳本,去「index.html」,對吧?

您對路徑設置不正確有什麼見解嗎? /opt/run/snapshot/應該指向什麼?或者,我需要在get(‘/’)處理程序中做出哪些更改才能正確指向我的「index.html」?

編輯

我畫了不正確的文件夾結構。現在它是正確的。

我也關掉了app.get()並打開了app.use(express.static(__dirname + '/../client/www/')。但無濟於事:現在我得到一個Cannot GET /錯誤。

我最終要做的是讓「server.js」文件成爲節點服務器,它主要是爲瀏覽器提供AngularJS HTML文件,以及來自「客戶端」的附帶圖片,樣式表等「文件夾。這是服務器的主要角色,它還具有驗證應用程序用戶的額外作用,並使用非常好的Satellizer模塊。就是這樣。我附有一個MongoDB,但除此之外,這是一個非常常見和直接的Node.js服務器應用程序。

謝謝!

+1

它在本地工作嗎?你的客戶和WWW都在大寫,確保它不是個案。 – laggingreflex 2014-11-09 08:25:29

回答

1

嘗試沒有生根,解決和註銷仔細檢查:

// 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); 

我可能會建議您按照佈局和快遞產生的慣例應用程序在根目錄下的應用程序和公開的靜態文件

/public 
    <static files> 
app.js 

然後做生成的應用程序:

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

好的,謝謝,bryanmac;我會嘗試你的建議。欣賞它! – Lew 2014-11-09 14:44:15

+0

經過這些更改後,__dirname是「/ opt/run/snapshot/package」,並且在創建staticPath時,新路徑變爲staticPath ='/ opt/run/snapshot/client/www',但我認爲它應該是staticPath ='/ opt/run/snapshot/package/client/www'。 但它工作!所以,非常感謝。欣賞你的時間。 – Lew 2014-11-09 14:57:19

+0

完成。再次感謝! – Lew 2014-11-09 21:34:07