详解如何在nuxt中添加proxyTable代理


Posted in Javascript onAugust 10, 2018

背景

在本地开发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"
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery 滑入滑出效果实现代码
Mar 27 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
Jan 29 Javascript
利用jQuary实现文字浮动提示效果示例代码
Dec 26 Javascript
jQuery基于当前元素进行下一步的遍历
May 20 Javascript
jQuery实用函数用法总结
Aug 29 Javascript
jQuery $.each遍历对象、数组用法实例
Apr 16 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
May 05 Javascript
jQuery3.0中的buildFragment私有函数详解
Aug 16 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
Feb 24 jQuery
JS从非数组对象转数组的方法小结
Mar 26 Javascript
基于js实现抽红包并分配代码实例
Sep 19 Javascript
Vite和Vue CLI的优劣
Jan 30 Vue.js
解决bootstrap中下拉菜单点击后不关闭的问题
Aug 10 #Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
Aug 10 #Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
Aug 10 #Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
Aug 10 #Javascript
Bootstrap模态对话框中显示动态内容的方法
Aug 10 #Javascript
解决bootstrap-select 动态加载数据不显示的问题
Aug 10 #Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
Aug 10 #Javascript
You might like
ThinkPHP采用模块和操作分析
2011/04/18 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
动态样式类封装JS代码
2009/09/02 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
JS实现图片预加载无需等待
2012/12/21 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
Python脚本后台运行的几种方式
2015/03/09 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
Javascript验证方法大全
2015/09/21 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
python三元运算符实现方法
2013/12/17 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
详解flask表单提交的两种方式
2018/07/21 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
python和opencv构建运动检测器的实现
2021/03/03 Python
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
老师推荐信
2013/10/28 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书