详解如何在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 相关文章推荐
javascript调试说明
Jun 07 Javascript
jQuery中click事件的定义和用法
Dec 20 Javascript
充分发挥Node.js程序性能的一些方法介绍
Jun 23 Javascript
jquery实现两个图片渐变切换效果的方法
Jun 25 Javascript
jquery.mousewheel实现整屏翻屏效果
Aug 30 Javascript
jquery密码强度校验
Dec 02 Javascript
深入理解Angular2 模板语法
Aug 07 Javascript
JS验证图片格式和大小并预览的简单实例
Oct 11 Javascript
Swiper实现轮播图效果
Jul 03 Javascript
原生js实现抽奖小游戏
Jun 27 Javascript
p5.js绘制旋转的正方形
Oct 23 Javascript
JS前端使用canvas实现物体的点选示例
Aug 05 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
咖啡知识大全
2021/03/03 新手入门
php 动态执行带有参数的类方法
2009/04/10 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
js读取配置文件自写
2014/02/11 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
vue使用过滤器格式化日期
2021/01/20 Vue.js
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
python基础梳理(一)(推荐)
2019/04/06 Python
Python使用pyautocad+openpyxl处理cad文件示例
2019/07/11 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
python解包用法详解
2021/02/17 Python
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
自我鉴定范文200字
2013/10/02 职场文书
学风建设主题班会
2015/08/17 职场文书
通知怎么写?
2019/04/17 职场文书