2016-01-21 63 views
0

自從我重構它以來,我的nodeJS應用程序出現了一個奇怪的問題。NodeJS和快車,查看文件ENOENT

該應用啓動良好,API正確回答,但是當我嘗試去/時,出現此錯誤:Error: ENOENT, stat '/views/index.html'在我的瀏覽器中。

我現在用這個文件夾樹:

  • 項目
      • 意見
        • 的index.html
    • bower_components
    • 應用
    • 節點
      • server.js

這裏是我的server.js的內容文件:

var express = require('express'); 
var app = express(); 
var morgan = require('morgan'); 
var bodyParser = require('body-parser'); 
var methodOverride = require('method-override'); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 
var fs = require('fs'); 
var nconf = require('nconf'); 

app.use(express.static(__dirname + '/../front')); 
app.use(express.static(__dirname + '/../node_modules')); 
app.use(express.static(__dirname + '/../bower_components')); 

app.use(morgan('dev')); 

app.use(bodyParser.urlencoded({'extended': 'true'})); 
app.use(bodyParser.json()); 
app.use(bodyParser.json({type: 'application/vnd.api+json'})); 
app.use(methodOverride()); 

server.listen(8081); 

(...) // some code to define API routes 

app.get('/', function (req, res) { 
    res.sendfile('/views/index.html'); 
}); 

我試着評論app.use(express.static(__dirname + '/../front'));並使用'/front/views/index.html'來調用視圖,但結果是一樣的。

回答

0

正如@ Sean3z的建議,我試圖改變我的sendfile的聲明,並得到其他錯誤(禁止,sendStream錯誤)。

最後我設法讓它改變我的靜態文件定義的工作: app.use('/front', express.static(__dirname + '/../front'));

並通過修改SENDFILE:res.sendfile('front/views/index.html');

奇怪的是,理解的NodeJS(但不是我:)),並調用正確的文件在正確的地方。我只需要在differents文件中更正我的呼叫即可。

感謝您的答案。

3

ENOENT意味着Error NO ENTry這最終意味着它無法找到您的文件。

INT ENOENT

沒有這樣的文件或目錄。這是一個「文件不存在」 錯誤的普通文件在上下文中被引用,他們 預計已經存在。

您的服務器正試圖從您的機器的根目錄(/views/index.html)發送文件。您可能需要調整它以適合您的文件結構。

app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/../font/views/index.html'); 
}); 
+0

感謝您解釋錯誤。 – 2016-01-21 13:40:05

+0

@ Sean3z:奇怪的是,當我嘗試你的建議,我得到了另一個錯誤:rror:'Sendbream SendStream.error(/home/marc/tennis/node_modules/express/node_modules/send/lib/send.js:228: (/home/marc/tennis/node_modules/express/node_modules/send/lib/send.js:423:19) at ServerResponse.res.sendfile(/ home/marc/tennis/node_modules/express/lib/response.js:409:8) at /home/marc/tennis/node/server.js:423:9' –

+0

@MarcDelerue另一個錯誤是什麼? – Sean3z

0

我相信你錯過了設置views文件夾。

app.set('views', 'MY_DIR_PATH'); 
+0

我試過了,但好像不太好。我有點解決它改變我的靜態聲明... –

+0

你也可以使用'app.use(express.static(__ dirname +'/');' – Nesh