node.js - res.sendFile 命令nodejs中的错误
问题描述
[
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>
]
通过在 localhost:3000 上运行代码, 我在我的 Bowser 上得到了这个结果
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) 在参数 (C:\Users\DELL pc\Documents\node\node_modules\express\lib\router\index.js:138:11) 在传递 (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) 在下一个 ( C:\Users\DELL pc\Documents\node\node_modules\connect\lib\proto.js:174:15) 在 Object.urlencodedParser [作为句柄] (C:\Users\DELL pc\Documents\node\node_modules\body -parser\lib\types\urlencoded.js:91:7) 在下一个 (C:\Users\DELL pc\Documents\node\node_modules\connect\lib\proto.js:174:15) 在 Object.jsonParser [作为句柄] (C:\Users\DELL pc\Documents\node\node_modules\body-parser \lib\types\json.js:110:7) 在下一个 (C:\Users\DELL pc\Documents\node\node_modules\connect\lib\proto.js:174:15) 在 Object.expressInit [作为句柄] (C:\Users\DELL pc\Documents\node\node_modules\express\lib\middleware.js:30:5) 在下一个 (C:\Users\DELL pc\Documents\node\node_modules\connect\lib\proto. js:174:15) 在 Object.query [作为句柄] (C:\Users\DELL pc\Documents\node\node_modules\connect\lib\middleware\query.js:43:5) 在下一个 (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)jsonParser [作为句柄] (C:\Users\DELL pc\Documents\node\node_modules\body-parser\lib\types\json.js:110:7) 在下一个 (C:\Users\DELL pc\Documents\node \node_modules\connect\lib\proto.js:174:15) 在 Object.expressInit [作为句柄] (C:\Users\DELL pc\Documents\node\node_modules\express\lib\middleware.js:30:5)在下一个 (C:\Users\DELL pc\Documents\node\node_modules\connect\lib\proto.js:174:15) 在 Object.query [作为句柄] (C:\Users\DELL pc\Documents\node\ node_modules\connect\lib\middleware\query.js:43:5) 在 Function.app 的下一个 (C:\Users\DELL pc\Documents\node\node_modules\connect\lib\proto.js:174:15)。句柄(C:\Users\DELL pc\Documents\node\node_modules\connect\lib\proto.js:182:3)jsonParser [作为句柄] (C:\Users\DELL pc\Documents\node\node_modules\body-parser\lib\types\json.js:110:7) 在下一个 (C:\Users\DELL pc\Documents\node \node_modules\connect\lib\proto.js:174:15) 在 Object.expressInit [作为句柄] (C:\Users\DELL pc\Documents\node\node_modules\express\lib\middleware.js:30:5)在下一个 (C:\Users\DELL pc\Documents\node\node_modules\connect\lib\proto.js:174:15) 在 Object.query [作为句柄] (C:\Users\DELL pc\Documents\node\ node_modules\connect\lib\middleware\query.js:43:5) 在 Function.app 的下一个 (C:\Users\DELL pc\Documents\node\node_modules\connect\lib\proto.js:174:15)。句柄(C:\Users\DELL pc\Documents\node\node_modules\connect\lib\proto.js:182:3)15) 在 Object.expressInit [作为句柄] (C:\Users\DELL pc\Documents\node\node_modules\express\lib\middleware.js:30:5) 在下一个 (C:\Users\DELL pc\Documents\ node\node_modules\connect\lib\proto.js:174:15) 在 Object.query [作为句柄] (C:\Users\DELL pc\Documents\node\node_modules\connect\lib\middleware\query.js:43 :5) 在下一个 (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)15) 在 Object.expressInit [作为句柄] (C:\Users\DELL pc\Documents\node\node_modules\express\lib\middleware.js:30:5) 在下一个 (C:\Users\DELL pc\Documents\ node\node_modules\connect\lib\proto.js:174:15) 在 Object.query [作为句柄] (C:\Users\DELL pc\Documents\node\node_modules\connect\lib\middleware\query.js:43 :5) 在下一个 (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)\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)\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)
解决方案
res
我知道存在但不是函数的唯一原因res.sendFile()
是,如果您在将sendFile
方法添加到 Express 之前运行的是旧版本的 Express。
从文档:
从 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
推荐阅读
- jquery - 使用 jQuery 解析 XML,从节点获取图像 url
- php - laravel:如何检查每个类别中的项目可用性?
- stimulusjs - 如何获取所有子目标
- javascript - 离线时创建 React App ServiceWorker.js 重定向
- javascript - 如何在 Firebase 管理 SDK 中监视更新功能
- swift - 滚动后,我的计时器标签占用了一个新数字
- javascript - Javascript:if else 语句
- java - Spring Data 对 NamedNativeQuery (JPA-Hibernate-MySql) 进行分页和排序
- python - 张量流内存SIGABRT
- javascript - 添加到列表
使用 jQuery