资讯专栏INFORMATION COLUMN

如何在nuxt中添加proxyTable代理

QLQ / 2551人阅读

摘要:背景在本地开发项目的时候,当你习惯了解决本地跨域的问题,切换到的时候,你会发现,添加了设置并没有什么作用,那是因为你是用的脚手架生成的项目,它里面已经帮你写好了相关的的设置代码。觉得运行不方便还可以把命令添加到文件里。

背景

在本地开发vue项目的时候,当你习惯了proxyTable解决本地跨域的问题,切换到nuxt的时候,你会发现,添加了proxyTable设置并没有什么作用,那是因为你是用的vue脚手架生成的vue项目,它里面已经帮你写好了相关的proxyTable的设置代码。

build/dev-server.js
// proxy api requests
Object.keys(proxyTable).forEach(function (context) {
  var options = proxyTable[context]
  if (typeof options === "string") {
    options = { target: options }
  }
  app.use(proxyMiddleware(options.filter || context, options))
})

这里是采用的express中间件的形式,使用的依赖是http-proxy-middleware
nuxt也有中间件的概念,不过这个中间件不是express的中间件,那么我们怎么添加到nuxt里面去呢?

怎么做
首先,安装依赖
npm install --save-dev express http-proxy-middleware
然后在根目录创建一个文件server.js
const { Nuxt, Builder } = require("nuxt")
const app = require("express")()
var proxyMiddleware = require("http-proxy-middleware")
var config = require("./nuxt.config")
// 我们用这些选项初始化 Nuxt.js:
const isProd = process.env.NODE_ENV === "production"
const nuxt = new Nuxt({ dev: !isProd })
// 生产模式不需要 build
if (!isProd) {
  const builder = new Builder(nuxt)
  builder.build()
}

// proxy api requests这里就是添加的proxyTable中间价的设置了
var proxyTable = config.dev.proxyTable
Object.keys(proxyTable).forEach(function (context) {
    var options = proxyTable[context]
    if (typeof options === "string") {
      options = { target: options }
    }
    app.use(proxyMiddleware(options.filter || context, options))
  })
app.use(nuxt.render)//这里是添加nuxt渲染层服务的中间件



app.listen(3000)
console.log("Server is listening on http://localhost:3000")
然后在nuxt.config.js中添加如下代码
module.exports = {
    dev: {
    proxyTable: {
          "/api":
            {
                target: "http://localhost:7001", // 
                pathRewrite: { "^/api": "/" }
            }
        }
      }
}

然后node server.js运行就可以了。
觉得运行不方便还可以把命令添加到package.json文件里。

{
     "scripts": {
        "dev": "nuxt --port=8080",
        "build": "nuxt build",
        "start": "nuxt start",
        "generate": "nuxt generate",
        "lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
        "precommit": "npm run lint",
        "server": "node server.js"
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96768.html

相关文章

  • 服务端预渲染之Nuxt(路由篇)

    摘要:前面既然说到了会把文件夹下面的所有文件编译成路由,那么子路由需要使用文件夹嵌套才行。客户端首次访问的页面会在服务端做输出,一旦渲染完成之后,则不会再在服务端输出,则会一直在客户端进行输出了。 服务端预渲染之Nuxt - 使用 现在大多数开发都是基于Vue或者React开发的,能够达到快速开发的效果,也有一些不足的地方,Nuxt能够在服务端做出渲染,然后让搜索引擎在爬取数据的时候能够读到...

    yuanxin 评论0 收藏0
  • vue 服务器端渲染 nuxt.js初探

    摘要:在调研插件后,发现无法满足以及等要求时,果断选用了做服务器渲染。布局目录该目录名为保留的,不可更改。服务器启动的时候,该目录下的文件会映射至应用的根路径下。它可以在服务端或路由更新之前被调用。可用于指定服务端返回的请求状态码。 开头还是来一段废话: 年关将近,给大家拜个早年,愿大家年会都能抽大奖,来年行大运。 废话不多说,直接进正文 项目环境: 前端vue项目, 需要将新增的几个路由页...

    bingchen 评论0 收藏0
  • vue-cli项目proxyTable跨域问题小结

    摘要:由两部分组成回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中指定的。动态创建标签,设置其,回调函数在中设置在页面中,返回的作为参数传入回调函数中,我们通过回调函数来来操作数据。 什么是跨域? 同源策略规定了如果两个 url 的协议、域名、端口中有任何一个不等,就认定它们跨源了。 跨域的解决方式有哪几种? 1.JSONP 是 JSON with ...

    lidashuang 评论0 收藏0
  • vue-cli项目proxyTable跨域问题小结

    摘要:由两部分组成回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中指定的。动态创建标签,设置其,回调函数在中设置在页面中,返回的作为参数传入回调函数中,我们通过回调函数来来操作数据。 什么是跨域? 同源策略规定了如果两个 url 的协议、域名、端口中有任何一个不等,就认定它们跨源了。 跨域的解决方式有哪几种? 1.JSONP 是 JSON with ...

    张金宝 评论0 收藏0
  • 解决vue-axios和vue-resource跨域问题

    摘要:个人博客同步文章最近在学习,在中没有,而是利用和进行数据通信。问题在使用的请求时出现跨域问题。这个非常重要,困惑了自己好久设置代理解决跨域问题后注释掉解决跨域问题同一样设置代理方法,不过不需要特别声明中的内容了。 个人博客同步文章 https://mr-houzi.com/2018/02/... 最近在学习vue,在vue中没有ajax,而是利用vue-resource和vue-ax...

    nanfeiyan 评论0 收藏0

发表评论

0条评论

QLQ

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<