【问题标题】:Error: Request failed with status code 404 (Node.js + Vue.js)?错误:请求失败,状态码为 404(Node.js + Vue.js)?
【发布时间】:2019-01-25 17:05:45
【问题描述】:

我有点困惑,需要一些帮助。

我使用 Node.js 编写了一个 HTTP 服务器,并从 Vue.js 向 HTTP 服务器发出一个 HTTP 请求。不知何故,它总是返回这样的错误:

Error: Request failed with status code 404
    at FtD3.t.exports (createError.js:16)
    at t.exports (settle.js:18)
    at XMLHttpRequest.f.(:3010/anonymous function) (http://localhost:3010/static/js/vendor.1dc24385e2ad03071ff8.js:1312:88758)

似乎 url 地址不正确导致浏览器中的错误是 404。我检查了几次 url 地址,但没有发现有什么问题。我想念什么?

P.S. 从网站从远程 sftp 服务器加载文件的主要任务。我使用该任务ssh2-sftp-client 库作为后端。

当用户点击按钮时,应用程序运行getFile函数,我们向HTTP服务器发送post请求。

Vue.js 组件内的代码:

getFile (fileName) {
    axios.post('http://localhost:3010/csv', {file_name: fileName}, {headers: {'Authorization': this.token}}).then(response => {
        console.log(response)
        this.showAlert('You download file successfully.', 'is-success', 'is-top')
    }).catch((error) => {
        console.log(error)
        this.showAlert(error, 'is-danger', 'is-bottom')
    })
}

app.js:

const express = require('express');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const cors = require('cors');
const path = require('path');
const bodyParser = require('body-parser');

const csvRouter = require('./server/routes/csv')

const app = express();

app.use(cors());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, 'dist')));
app.use(express.urlencoded({extended: false}));
app.use(cookieParser());

app.use('/csv', csvRouter);

module.exports = app;

路由器/csv.js:

const express = require('express')
const router = express.Router()

const csvControllers = require('../controllers/csv')

router.get('/', csvControllers.getFile)

module.exports = router

控制器/csv.js:

const request = require('request')
const queryString = require('query-string')
let Client = require('ssh2-sftp-client')
let sftp = new Client()

const config = require('../config')

exports.getFile = (req, res) => {
  console.log(req)  // In console I don't notice nothing.
  let data = {
    file_name: req.query.file_name
  }
  let options = {
    method: 'port',
    json: true,
    header: {'Authorization': req.header.token},
    url: `http://localhost:3010/csv?` + queryString.stringify(data)
  }
  request(options, (error, response) => {
    console.log('Message')  // In console I don't notice nothing.
    if (response) {
      sftp.connect(config.sftpServer).then(() => {
        return sftp.get('/reports/' + data.file_name)
      }).then((chunk) => {
        console.log(chunk)
      }).catch((err) => {
        console.log(err)
      })
    } else {
      response.status(500).send(error)
    }
  })
}

【问题讨论】:

    标签: javascript node.js vue.js


    【解决方案1】:

    您的app.js 文件中似乎缺少app.listen(port)

    app.listen(3000)
    

    https://expressjs.com/en/starter/hello-world.html

    【讨论】:

    • 不,我不会错过的。它只是在其他文件中。里面bin/www。我在该文件中使用这样的代码:let port = normalizePort(process.env.PORT || '3010')app.set('port', port),然后是const server = http.createServer(app)。最后server.listen(port)你有什么想法吗?
    • 兄弟,有什么更好的方法?使用server.lister(port)app.lister(port)?
    • 我没有其他线索 - 其他一切似乎都很好。
    【解决方案2】:

    controllers/csv.js 中,您永远不会发送回复。你应该在某个地方有一个res.sendres.renderres.json

    【讨论】:

      猜你喜欢
      • 2020-09-18
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 2023-01-21
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      相关资源
      最近更新 更多