在本地开发vue项目时,当你习惯用proxyTable解决本地跨域问题时,切换到nuxt后,你会发现添加proxyTable设置没有任何作用。那是因为你是用vue脚手架生成vue工程,里面已经帮你写好了相关的proxyTable设置代码。build/dev-server.js//代理apirequestsObject.keys(proxyTable).forEach(function(context){varoptions=proxyTable[context]if(typeofoptions==='string'){options={target:options}}app.use(proxyMiddleware(options.filter||context,options))})这里使用的是express中间件的形式,使用的依赖是http-proxy-middlewarenuxt也有中间件的概念,但是这个中间件不是express中间件,那么我们如何将它添加到nuxt中呢?具体怎么做首先,安装依赖npminstall--save-devexpresshttp-proxy-middleware然后在根目录下创建一个文件server.jsconst{Nuxt,Builder}=require('nuxt')constapp=require('express')()varproxyMiddleware=require('http-proxy-middleware')varconfig=require('./nuxt.config')//我们使用这些选项初始化Nuxt.js:constisProd=process.env。NODE_ENV==='production'constnuxt=newNuxt({dev:!isProd})//生产模式不需要buildif(!isProd){constbuilder=newBuilder(nuxt)builder.build()}//proxyapi请求在这里添加varproxyTable=config.dev.proxyTableObject.keys(proxyTable).forEach(function(context){varoptions=proxyTable[context]if(typeofoptions==='string'){options={target:options}}app.use(proxyMiddleware(options.filter||context,options))})app.use(nuxt.render)//这里中间件app.listen(3000)console.log('Serverislisteningonhttp://localhost:3000')添加nuxt渲染层服务,然后在nuxt中添加如下代码module.exports。config.js={dev:{proxyTable:{'/api':{target:'http://localhost:7001',//pathRewrite:{'^/api':'/'}}}}}然后节点server.js运行即可。如果觉得运行起来不方便,可以将命令添加到package.json文件中。{“脚本”:{“开发”:“nuxt--port=8080”,“构建”:“nuxt构建”,“开始”:“nuxt启动”,“生成”:“nuxt生成”,“lint”:"eslint--ext.js,.vue--ignore-path.gitignore.","precommit":"npmrunlint","server":"nodeserver.js"}}
