详解如何在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 相关文章推荐
对google个性主页的拖拽效果的js的完整注释[转]
Apr 10 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
Mar 18 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
Jun 21 Javascript
jQuery UI仿淘宝搜索下拉列表功能
Jan 10 Javascript
jQuery命名空间与闭包用法示例
Jan 12 Javascript
全面解析vue中的数据双向绑定
May 10 Javascript
利用npm 安装删除模块的方法
May 15 Javascript
微信小程序实现搜索指定景点周边美食、酒店
May 18 Javascript
vue 实现input表单元素的disabled示例
Oct 28 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
Dec 12 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
Apr 23 Javascript
Element Input输入框的使用方法
Jul 26 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/06/02 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
javascript 节点排序 2
2011/01/31 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
2013/04/26 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
浅谈JavaScript字符串拼接
2015/06/25 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
树结构之JavaScript
2017/01/24 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
Python中AND、OR的一个使用小技巧
2015/02/18 Python
Python制作数据导入导出工具
2015/07/31 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
python软件都是免费的吗
2020/06/18 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
使用python实现学生信息管理系统
2021/02/25 Python
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
财政专业求职信范文
2014/02/19 职场文书
党性观念心得体会
2014/09/03 职场文书
热血教师观后感
2015/06/10 职场文书
Python集合的基础操作
2021/11/01 Python
Python采集壁纸并实现炫轮播
2022/04/30 Python
spring 项目实现限流方法示例
2022/07/15 Java/Android