>  기사  >  웹 프론트엔드  >  nuxt에 ProxyTable 프록시를 추가하는 방법은 무엇입니까?

nuxt에 ProxyTable 프록시를 추가하는 방법은 무엇입니까?

php是最好的语言
php是最好的语言원래의
2018-08-09 16:01:042763검색

Background

vue 프로젝트를 로컬에서 개발할 때 proxyTable을 사용하여 로컬 도메인 간 문제를 해결하고 nuxt로 전환하면 >proxyTable 설정은 아무런 효과가 없습니다. 이는 vue 스캐폴딩을 사용하여 관련 proxyTable 설정 코드를 이미 작성한 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

build/dev-server.js
{
     "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"
    }
}
이것은 express 미들웨어 형태이며, 사용된 종속성은 http-proxy-middleware입니다.

nuxt도 다음과 같은 개념을 가지고 있습니다. middleware 인데 이 미들웨어는 express의 미들웨어가 아닙니다. 그러면 nuxt에 어떻게 추가하나요?


방법

먼저 종속성을 설치합니다.
rrreee
그런 다음 server.js
rrreee
파일을 만듭니다. 루트 디렉터리에 다음 코드를 nuxt.config.js
rrreee에 추가하고 node server.js를 실행하세요. 실행하기 불편하시면 package.json 파일에 명령어를 추가하셔도 됩니다. rrreee

관련 권장 사항:

🎜웹사이트에 동영상을 추가하는 방법🎜🎜🎜🎜http 요청 헤더에 쿠키를 추가하는 방법🎜🎜

위 내용은 nuxt에 ProxyTable 프록시를 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.