首頁  >  文章  >  web前端  >  如何在nuxt中新增proxyTable代理?

如何在nuxt中新增proxyTable代理?

php是最好的语言
php是最好的语言原創
2018-08-09 16:01:042817瀏覽

背景

在本機開發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"
    }
}

相關推薦:

如何在網站中加入影片

如何在http請求頭中新增cookie

以上是如何在nuxt中新增proxyTable代理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn