如何从Express Server获得对Nuxt.js中Ajax查询的响应

时间:2019-06-21 19:27:32

标签: node.js express vue.js axios nuxt.js

从nuxtjs应用的任何页面发送ajax查询后,我想从节点/ express服务器获取数据。 通常,对于在PHP服务器中获取和发送ajax查询,我喜欢这样的$ _GET ['var'];回声json_encode('服务器获取数据'); 现在,我想使用节点服务器Express将数据保存在mongodb中。 当我尝试发送查询时,响应返回文件test.js的完整代码。

文件index.vue

 methods: {
   onServer() {
     this.$axios.get('/server/test').then(res => {
       console.log('res', res.data)
    })
  }
 }

文件test.js

 var express = require('express');
 var app = express();

app.get('*', function (req, res) {
   res.send('Hello World!');
});

app.listen(3000, function () {
   console.log('Example app listening on port 3000!');
});

文件服务器/index.js

const express = require('express')
const consola = require('consola')
const { Nuxt, Builder } = require('nuxt')
const app = express()


// Import and Set Nuxt.js options
const config = require('../nuxt.config.js')
config.dev = !(process.env.NODE_ENV === 'production')

async function start() {
  // Init Nuxt.js
  const nuxt = new Nuxt(config)

  const { host, port } = nuxt.options.server

  // Build only in dev mode
  if (config.dev) {
    const builder = new Builder(nuxt)
    await builder.build()
  } else {
    await nuxt.ready()
  }

  // Give nuxt middleware to express
  app.use(nuxt.render)

  // Listen the server
  app.listen(port, host)
  consola.ready({
    message: `Server listening on http://${host}:${port}`,
    badge: true
  })
}
start()

我是一个新的用户节点,请帮助我!

1 个答案:

答案 0 :(得分:0)

您的主要问题是,您要在axios网址中定位“ test.js”。这就是为什么它使用文件而不是get路由响应的原因。

所以尝试:

this.$axios.get('http://nuxt-profi/server/test').then(...

看看你得到什么。您还应该能够在浏览器中访问它,只需转到URL http://nuxt-profi/server/test,它就会显示“ Hello World”响应。

但是我不确定您如何设置所有这一切。您是否正在将其作为开发运行?在这种情况下,您可能应该以{{1​​}}的身份访问它,但是也许您已经配置了虚拟主机。另外,这是一个单独的后端api还是您尝试将其用作服务器中间件?

如果这没有帮助,请向我们提供有关您的项目设置的更多信息,我们将从那里开始。