详解如何在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 相关文章推荐
一个符号插入器 中用到的js代码
Sep 04 Javascript
jQuery 使用个人心得
Feb 26 Javascript
JavaScript 动态添加表格行 使用模板、标记
Oct 24 Javascript
JS 作用域与作用域链详解
Apr 07 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
Feb 06 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
Oct 29 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
Dec 23 Javascript
Webpack如何引入bootstrap的方法
Jun 17 Javascript
vue使用laydate时间插件的方法
Nov 14 Javascript
浅谈vue.use()方法从源码到使用
May 12 Javascript
jQuery实现简易聊天框
Feb 08 jQuery
es6中Promise 对象基本功能与用法实例分析
Feb 23 Javascript
解决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
php实现监听事件
2013/11/06 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
PHP  Yii清理缓存的实现方法
2016/11/10 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
基于jquery的可多选的下拉列表框
2012/07/20 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
Javascript操作dom对象之select全面解析
2017/04/24 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
vue2.x数组劫持原理的实现
2020/04/19 Javascript
vue+koa2搭建mock数据环境的详细教程
2020/05/18 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
python使用Tesseract库识别验证
2018/03/21 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
python2和python3哪个使用率高
2020/06/23 Python
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
教育系毕业生中文求职信范文
2013/10/06 职场文书
表彰大会主持词
2014/03/26 职场文书
校园绿化美化方案
2014/06/08 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
大学生读书笔记范文
2015/07/01 职场文书