首页 文章

res.sendFile命令nodejs中的错误

提问于
浏览
0

[

var express = require("express");
var app = express();
var port = 3000;
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

var mongoose = require("mongoose");
mongoose.Promise = global.Promise;
mongoose.connect("mongodb://localhost:27017/node-demo");
var nameSchema = new mongoose.Schema({
    firstName: String,
    lastName: String
});
var User = mongoose.model("User", nameSchema);

app.get("/", (req, res) => {
    res.sendFile(__dirname + "/index.html");
});

app.post("/addname", (req, res) => {
    var myData = new User(req.body);
    myData.save()
        .then(item => {
            res.send("Name saved to database");
        })
        .catch(err => {
            res.status(400).send("Unable to save to database");
        });
});

app.listen(port, () => {
    console.log("Server listening on port " + port);
});
<!DOCTYPE html>
<html>
    <head>
        <title>Intro to Node and MongoDB</title>
    </head>

    <body>
        <h1>Into to Node and MongoDB</h1>
        <form method="post" action="/addname">
            <label>Enter Your Name</label><br>
            <input type="text" name="firstName" placeholder="Enter first name..." required>
            <input type="text" name="lastName" placeholder="Enter last name..." required>
            <input type="submit" value="Add Name">
        </form>
    </body>
</html>

]

by running the code on localhost:3000 我在我的保龄球上得到了这个结果

TypeError:res.sendFile在回调时不是app.get(C:\ Users \ DeLL pc \ Documents \ node \ app.js:18:9)中的函数(C:\ Users \ DeLL pc \ Documents \ node \ node_modules) \ express \ lib \ router \ index.js:164:37)at param(C:\ Users \ DeLL pc \ Documents \ node \ node_modules \ express \ lib \ router \ index.js:138:11)at pass(C :\ Users \ DeLL pc \ Documents \ node \ node_modules \ express \ lib \ router \ index.js:145:5)在Router._dispatch(C:\ Users \ DeLL pc \ Documents \ node \ node_modules \ express \ lib \) router \ index.js:173:5)在Object.router [作为句柄](C:\ Users \ DeLL pc \ Documents \ node \ node_modules \ express \ lib \ router \ index.js:33:10)下一步(在Object.urlencodedParser [作为句柄]的C:\ Users \ DeLL pc \ Documents \ node \ node_modules \ connect \ lib \ proto.js:174:15)(C:\ Users \ DeLL pc \ Documents \ node \ node_modules \ body -parser \ lib \ types \ urlencoded.js:91:7)在Object.jsonParser的下一个(C:\ Users \ DeLL pc \ Documents \ node \ node_modules \ connect \ lib \ proto.js:174:15)[as在nex处理(C:\ Users \ DeLL pc \ Documents \ node \ node_modules \ body-parser \ lib \ types \ json.js:110:7)在Object.expressInit [作为句柄]的t(C:\ Users \ DeLL pc \ Documents \ node \ node_modules \ connect \ lib \ proto.js:174:15)(C:\ Users \ DeLL pc \ Documents \ node \ node_modules \ express \ lib \ middleware.js:30:5)at Object.query下的(C:\ Users \ DeLL pc \ Documents \ node \ node_modules \ connect \ lib \ proto.js:174:15)[作为句柄] (C:\ Users \ DeLL pc \ Documents \ node \ node_modules \ connect \ lib \ middleware \ query.js:43:5)at next(C:\ Users \ DeLL pc \ Documents \ node \ node_modules \ connect \ lib \ proto.js:174:15)在Function.app.handle(C:\ Users \ DeLL pc \ Documents \ node \ node_modules \ connect \ lib \ proto.js:182:3)

1 回答

  • 0

    我知道 res 存在的唯一原因,但 res.sendFile() 不是函数,如果你在将 sendFile 方法添加到Express之前运行旧版本的Express .

    来自the doc

    Express v4.8.0以上版本支持res.sendFile() .


    您还可以添加一些日志记录以获取更多信息:

    app.get("/", (req, res) => {
        console.log(typeof res.sendFile);
        console.log(res);
        res.sendFile(__dirname + "/index.html");
    });
    

    在您的控制台中,您可以使用此命令行查看已安装的Express版本:

    npm view express version
    

相关问题