Nodejs 中 vue 小 demo 的 post 请求被挂起怎么办?

发布于 1周前 作者 songsunli 来自 nodejs/Nestjs

Nodejs 中 vue 小 demo 的 post 请求被挂起怎么办?
如题 自己写的烂代码,之前一直没问题,最近打开想加一点功能发现跑都跑不起来了,在网页的 Network 看见请求被挂起:Provisional headers are shown,之前遇到过一次过会不知道怎么就好了,没怎么在意,网上看见的解决方法都不好使,因为是本地项目,都是 http 请求,不是网上说的安全降级问题,而且不只是谷歌浏览器,所以不是浏览器问题,这次想不到原因的再次出现,问问大家这怎么解决。
也不知道怎么了,貌似是对象传过去解析不出来的原因,但是之前还能跑,咋回事啊。。。

注:前端的提交代码
this.$<a target="_blank" href="http://http.post" rel="nofollow">http.post</a>('saveuser',<br> {<br> uname: this.$refs.uname.value,<br> upassword: this.$refs.upassword.value,<br> email: this.$refs.email.value,<br> problem: this.$refs.problem.value,<br> answer: this.$refs.answer.value<br> }).then(function (res) {<br> if (res.body.code == 1) {<br> this.registerOk = true;<br> this.registerMsg = "注册成功";<br> setTimeout(function () {<br> this.$router.push({path: '/index'});<br> }.bind(this), 1500);<br><br> } else {<br> this.registerOk = true;<br> this.registerMsg = res.body.msg;<br> }<br> }.bind(this))


注:后端的 node 代码
exports.saveUser = function (req, res) {<br> console.log("这里是 saveuser 方法");<br> var form = new formidable.IncomingForm();<br> form.parse(req, function (err, fields, files) {<br> if (fields.email) {<br> user.find({<br> email: fields.email<br> }, function (err, data) {<br> // 新用户数据存入数据库<br> if (data.length == 0) {<br> user.insertUser(fields, function (result) {<br> console.log("数据处理完成,code=" + result);<br> res.json({<br> "code": result<br> });<br> });<br> }<br> //数据库查出来存在这个用户了 返回已经注册的信息<br> else {<br> res.json({msg: "该邮箱已注册"});<br> }<br> });<br> }<br> });<br>};


3 回复

setTimeout 中不用箭头,现在直接可以用 this 了吗??


额,我用 bind 修改了 this 指向啊。。 而且和箭头函数没关系啊,箭头函数也可以修改指向的啊。。

在 Node.js 中,如果你的 Vue 小 demo 的 POST 请求被挂起,可能是由多种原因引起的,包括但不限于服务器未正确响应、CORS(跨源资源共享)策略未正确配置、或请求本身存在问题。以下是一些排查和解决问题的步骤:

  1. 检查服务器响应: 确保你的 Node.js 服务器能够正确处理 POST 请求。以下是一个简单的 Express 服务器示例,展示如何接收 POST 请求:

    const express = require('express');
    const app = express();
    const port = 3000;
    
    app.use(express.json()); // 解析 JSON 请求体
    
    app.post('/api/data', (req, res) => {
      console.log(req.body);
      res.sendStatus(200); // 发送成功响应
    });
    
    app.listen(port, () => {
      console.log(`Server running at http://localhost:${port}`);
    });
    
  2. 配置 CORS: 如果你的 Vue 应用和 Node.js 服务器运行在不同的域或端口上,你需要配置 CORS。可以使用 cors 中间件:

    const cors = require('cors');
    app.use(cors());
    
  3. 检查前端请求: 确保 Vue 应用中的 POST 请求正确配置。例如,使用 axios 发送请求:

    axios.post('http://localhost:3000/api/data', { key: 'value' })
      .then(response => console.log(response))
      .catch(error => console.error(error));
    
  4. 查看网络日志: 使用浏览器的开发者工具查看网络日志,检查请求是否已发送以及服务器的响应。

通过上述步骤,你应该能够定位并解决 POST 请求被挂起的问题。如果问题仍然存在,可能需要进一步检查具体的请求和响应详情。

回到顶部