我现在使用的是Express 4.18.3,我在想为什么我的请求正文不能被解析?

import express, { Express, Request, Response } from 'express'

import dotenv from 'dotenv'
import v1 from './routes/index'

dotenv.config()
const app: Express = express()

app.use('/', v1)
app.use(express.json())
app.use(express.urlencoded({
  extended: true
})

const port = process.env.PORT || 3000

const startExpressServer = () => {
  app.listen(port, () => {
    console.log(`[server]: Server is running at http://localhost:${port}`)
  })
}

startExpressServer()

Req.Body当前未定义. 我的要求是:

curl --location 'http://localhost:3000/user/login' \
--header 'Content-Type: application/json' \
--data '{
    "apiKey": "test"
}'

推荐答案

此代码将起作用

文件树

enter image description here

main.js

import express from 'express';
import dotenv from 'dotenv';
import routes from './routes/index.js';

dotenv.config();
const app = express();

app.use(express.json());
app.use(express.urlencoded({
  extended: true
}));

app.use('/', routes);

const port = process.env.PORT || 3000;

const startExpressServer = () => {
  app.listen(port, () => {
    console.log(`[server]: Server is running at http://localhost:${port}`);
  });
};

startExpressServer();

./routes/index.js

import express from 'express';

const router = express.Router();

router.post('/user/login', (req, res) => {
  const { apiKey } = req.body;
  res.send('Login successful');
});

export default router;

package.json

{
  "type": "module",
  "dependencies": {
    "dotenv": "^16.4.5",
    "express": "^4.18.3"
  }
}

Install dependencies

npm install express dotenv

Run server

node main.js

Call it

curl --silent --location 'http://localhost:3000/user/login' \
--header 'Content-Type: application/json' \
--data '{
    "apiKey": "test"
}'

按卷发呼叫

enter image description here

postman 的电话

enter image description here

Node.js相关问答推荐

无法验证叶签名|无法验证第一个证书

使用NodeJS输出检索Base64图像的网络报废

Mongoose-不会更新数组中的属性值

为什么在导出的函数中调用node-sqlite3中的数据库方法时不起作用?

Mongoose抱怨说,整数是数字,而不是整数

从MongoDB获取Tree数据

遇到 - TypeError:try 使用 Express(Node.js) 从 JSON 文件访问数据时无法读取未定义的属性(读取帖子)

NPM如何管理node_modules传递依赖?

如何设置 Puppeteer Select 器的唯一性?

如何在套接字对象中存储或添加数据?

为什么我不能将 id 发送到后端并通过 findByIdAndRemove() 删除项目?

Express.js - 监听请求中止

使用Typescript 时我应该避免循环导入吗?

当我使用 uuid 代码意外崩溃,然后工作正常?

如何在 MongoDB collection.find() 上获取回调

调用 require 时的 const vs let

Javascript在try块内设置const变量

未在 Windows 8.1 上构建的 node 包 - 缺少 Microsoft.Cpp.Default.props

Nodejs将字符串转换为UTF-8

将 expressjs 绑定到特定的 IP 地址