NodeJS和express,ENOENT在视图文件上

时间:2016-01-21 13:29:28

标签: javascript node.js express

因为我重构了我的nodeJS应用程序,我遇到了一个奇怪的问题。 该应用程序启动良好,API正确回答,但当我尝试转到/时,我收到此错误:错误:在我的浏览器中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')。服务器(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(摩根( '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); (...)//一些用于定义API路由的代码 app.get('/',function(req,res){     res.sendfile( '/视图/ index.html中'); }); 我试着评论app.use(express.static(__ dirname +'/../front'));并使用'/front/views/index.html'调用视图,但结果是相同的。

3 个答案:

答案 0 :(得分:3)

ENOENT表示Error NO ENTry,这最终意味着它无法找到您的文件。

  

int ENOENT

     

没有这样的文件或目录。这是一个"文件不存在"   在它们所在的上下文中引用的普通文件的错误   预计已经存在。

您的服务器正在尝试从您计算机的根目录(/views/index.html)发送文件。您可能需要对其进行调整以适合您的文件结构。

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

答案 1 :(得分:1)

我相信您错过了设置views文件夹。

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

答案 2 :(得分:0)

正如@ Sean3z建议的那样,我试图改变我的sendfile声明并得到另一个错误(Forbidden,sendStream错误)。

最后,我设法通过更改静态文件定义来使其工作: app.use('/front', express.static(__dirname + '/../front'));

通过修改sendFile:res.sendfile('front/views/index.html');

奇怪的是,nodeJS理解(但不是我:))并在正确的位置调用正确的文件。我只需要在不同的文件中更正我的调用即可。

感谢您的回答。