node.js - > res.sendFile()未定义

时间:2017-03-25 15:07:04

标签: javascript mysql node.js

所以我将node.js与mySQL一起使用。当我启动服务器时,一切正常,但是当我访问127.0.0.1:3000时,它说res.sendFile()没有定义。我想发送索引html文件作为服务器的响应,但它不起作用。有什么问题?

var app = require('express')();
var mysql = require('mysql');
var bodyParser = require('body-parser');
var db = mysql.createConnection({
    host : "127.0.0.1",
    user : "root",
    password : "",
    database : "user_data",
    port : 3306
});

db.connect();

app.get('/',function(req, res){
  res.sendFile(__dirname+'/index.html');
});
app.listen(3000);

2 个答案:

答案 0 :(得分:0)

根据您的版本,未配置该功能(功能)。

清理您的软件包,首先将 express 版本更改为4.15.2,然后删除您的node_modules文件夹。然后是npm install

您应该启用静态文件服务。

app.use(express.static('public'))

然后在单词后你可以使用res.reder('index'); 虽然你必须先设置视图引擎。这是更多的信息。

<强> app.render(视图)

通过回调函数返回视图的呈现HTML。它接受一个可选参数,该参数是包含视图局部变量的对象。它就像res.render(),除了它不能自己将渲染的视图发送给客户端。

要设置您的视图引擎,请按照

进行操作
// set the view engine to ejs
app.set('view engine', 'ejs');

答案 1 :(得分:0)

假设它是一个静态文件,你也可以这样做;

app.use('/', express.static(__dirname + '/../public'));
//public being the folder containing your index.html.

//Example of Path;
//__dirname + '/../public'
__dirname = start in same folder as server.js.
/../ = go one folder back (in this case, to ROOT.
/public = enter the "public" folder, this is where our index.html is.

ROOT
  Server
    server.js
  Public
    css
    images
    index.html
    etc