这是我的路由器
router.post('/', async(req, res) => {
const posts = await loadPostsCollection()
await posts.insertOne({
text: req.body.text,
createdAt: new Date()
})
res.status(201).send()
})
这是终端错误
正在端口3090上侦听。。。。。(节点:7764)未经处理的PromisejectionWarning:TypeError:无法读取/Users/macbook/Desktop/node project/server/routes/api/posts上未定义的属性“text”。js:19:24在ProcessTicks和Rejections(internal/process/task_queues.js:94:5)(节点:7764)未处理Promisejection警告:未处理的promise拒绝。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。(拒绝id:1)(节点:7764)[DEP0018]弃用警告:未处理的promise拒绝已弃用。将来,未处理的promise拒绝将终止节点。具有非零退出代码的js进程。
这是因为您的req.body
将产生值未定义的
。因此,当您尝试执行req.body.text
时,当您试图访问未定义的值上的
text
属性时,会出现错误。
之所以会出现未定义的
,是因为您的Express应用无法解析请求主体。
为此,您需要安装
主体解析器
中间件依赖项,
npmi主体解析器
然后将此中间件添加到您的express应用程序,
const bodyParser = require('body-parser')
app.use(bodyParser.json())
参考:https://expressjs.com/en/resources/middleware/body-parser.html
这里是一个示例应用程序,
const express = require('express')
const app = express()
const bodyParser = require('body-parser')
app.use(bodyParser.json())
app.post('/', (req, res) => {
return res.send(`Hello ${req.body.name}!`)
})
app.listen(3000, () =>
console.log(`Example app listening at http://localhost:${port}`)
)
现在,如果您使用curl调用上述示例应用程序,
curl -XPOST localhost:3000 -H "Content-Type: application/json" -d '{"name":"Ram"}'
你会得到回应“你好,拉姆!”
我正在编写一个简单的Express应用程序来处理图像上传和搜索。上传工作正常,但相同的req.user._id在get请求中无效。知道为什么吗? post函数使用Multer中间件可以很好地工作。它使用req.user._id时没有任何问题--我已经检查了它是否上传到了数据库。 在我测试了一个返回以下错误的get函数后,立即返回了以下错误:TypeError:无法读取未定义的属性'_id'
我正在使用分离的存储库(后端)进行MERN堆栈项目 但是,当我切换到生产环境并将代理值替换为部署的链接时,“代理”不再受支持。我做了一个关于它的搜索,我发现它只是为了开发环境,我尝试了在互联网上找到的几个解决方案,但没有运气! 顺便说一下,我用Heroku部署后端,用Netlify部署前端。现在,它们都部署好了,没有任何错误,但是后端和前端之间没有连接。
编辑:我在这里不问任何关于cors的问题 所以我花了几个小时试图弄清楚发生了什么,嗯...我失去了它... 所以我有一个简单的应用程序,服务器部分用nodejs制作,前端用react制作,它们运行在不同的端口上,所以我使用了cors模块。 而res2是未定义的。 我错过了什么?
我希望我的REST API在存在异常和参数类型不匹配时抛出异常。以下是我的请求对象。 在上面的情况下,当一个请求违反这个字符串要求时,应该引发异常(向订阅类型提供一个整数值)。我还需要对无效字符进行验证,如*、-、 我的控制器看起来像这样。 我正在使用@Valid注释,并且我已经包含了Hibernate验证器的maven依赖项 但问题是,它不验证我的输入,也不接受订阅类型和caseId的整数值。
问题内容: 我注意到,几乎所有Express.js应用程序示例都使用端口3000作为HTTP服务器的默认侦听端口。这仅仅是因为它是一个很少使用的端口,还是该端口号有其他原因吗? 如果要在本地计算机上并行运行多个应用程序,使用3000、3001、3002等端口是否是一种好习惯? (我理解,理想情况下,您应该让系统分配端口。出于简单起见,这只是一个问题,为什么3000似乎是常规分配。) 问题答案: 选
我尝试了拉雷维尔的入门指南。通用域名格式。 有一章创建了任务。回调和函数