node.js - 我得到一个 TypeError: express.json() is not a function
问题描述
我是初学者,我一直在使用 github-learning-lab。它声明用于app.use(bodyParse.json())
执行 POST 请求,但 VSCode 声明不推荐使用“body-parse”。
我在网上搜索,大多数人说要使用app.use(express.json())
当前版本的 Express
我的快递版:4.17.1
我的节点版本:14.17.0
const express = require('express');
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: false }))
const mockUserData = [
{name: 'Mark'},
{name: 'Jill'}
]
app.get('/users', function(req, res){
res.json({
success: true,
message: 'successfully got users. Nice!',
users: mockUserData
})
})
// colons are used as variables that can be viewed in the params
app.get('/users/:id', function(req,res){
console.log(req.params.id);
res.json({
success: true,
message: 'got one user',
user: req.params.id
})
})
app.post('/login', function(req,res){
// Typically passwords are encrypted using something like bcrypt before sending to database
const username = req.body.username;
const password = req.body.password;
// This should come from the database
const mockUsername = 'billyTheKid';
const mockPassword = 'superSecret';
if (username === mockUsername && password === mockPassword) {
// In practice, use JSON web token sign method here to make an encrypted token
res.json({
success: true,
message: 'password and username match!',
token: 'encrypted token goes here'
})
} else {
res.json({
success: false,
message: 'password and username do not match'
})
}
})
app.listen(8000, function(){
console.log('server is running')
})
Macs-MBP:node-express-course mac$ node server.js
/Users/mac/Documents/node-express-course/server.js:4
app.use(express.json());
^
TypeError: express.json is not a function
at Object.<anonymous> (/Users/mac/Documents/node-express-course/server.js:4:17)
at Module._compile (internal/modules/cjs/loader.js:1068:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
at Module.load (internal/modules/cjs/loader.js:933:32)
at Function.Module._load (internal/modules/cjs/loader.js:774:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
Macs-MBP:node-express-course mac$ head node_modules/express/package.json
{
"_from": "express",
"_id": "express@4.17.1",
"_inBundle": false,
"_integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
"_location": "/express",
"_phantomChildren": {},
"_requested": {
"type": "tag",
"registry": true,
解决方案
我重新安装了快递。我最初安装它时可能犯了一个错误。我应该从一开始就尝试这个。谢谢您的帮助。
推荐阅读
- react-native - React Native:Text 组件的最后一个单词/字符在 Android 上消失(不在 IOS 上)
- vega-lite - 标记线不起作用,而标记圈起作用
- android - 我在片段中看不到选项菜单
- javascript - Discord.js 发送消息然后等到你回复
- c# - 使用 C# 在 Azure 存储中设置 X 天后设置 blob 的到期日期或自动删除 blob?
- python - 使用 Selenium 选择单选按钮,其值会发生变化
- svelte - 是否可以在运行时插入第三方 Svelte 组件?
- scala - 调用 findAndRemove 时,happy 和 error 返回类型是什么?
- swift - 使用 Google 身份验证登录
- docker - 路径因您连接到容器的方式而异