曾经,我非常羡慕那些人见人爱的人,我也想要变成那样,可是后来我才明白人见人爱也是需要天赋的,后来我开始默默努力,我想,就算我不能让每个人都喜欢我,至少因为我做的努力能得到别人的尊重。

开发、测试调试问题的几种解决方案

  在用vue-cli开发vue项目时,需要现在本地服务器上开发、测试,然后当需要调用后端端口的时候,又需要先npm run build打包,将打包后的dist文件夹下的文件再放到Tomcat服务器下,进行测试,这无疑是非常麻烦的,这里记录了我尽可能简化操作的几种方案。

 

第一种:直接在webpack中设置将文件打包到Tomcat服务器下

  通常来说,通过vue-cli构建的项目,会把dist文件打包到根目录下,但是我在测试时还需要再将之copy到Tomcat下,这样很不方便,所以不如就直接打包到Tomcat下。

  即打开config下的index.js,找到build下的相关选项,修改如下:

    // index: path.resolve(__dirname, '../dist/index.html'),
    // assetsRoot: path.resolve(__dirname, '../dist'),
    index: path.resolve(__dirname, '../../../programs/apache-tomcat-7.0.42/webapps/bbg/wechat2/index.html'),
    assetsRoot: path.resolve(__dirname, '../../../programs/apache-tomcat-7.0.42/webapps/bbg/wechat2'),

  于是,我们再进行打包时,就可以直接打包到Tomcat下了。 这样就节约了大部分的时间。  

  优点: 节约了打包之后复制、粘贴的时间。

  缺点: 仍然无法直接调试,并且还是需要打包这一步!  

 

第二种:使用代理服务器

  首先我们应该知道为什么会出现这篇博客所提的问题,那是因为我们在本地开发的时候如果使用nodejs提供的服务器是不能直接访问接口的,有跨域的问题,所以必须要在Tomcat下进行访问,因为tomcat下部署了一个war包,相当于直接部署了环境,然后在这样的环境下访问,就不存在跨域问题了。 所以我们的程序能直接在Tomcat下运行不就可以了吗!

  为了解决这个问题,我想有两种方案可以实施,第一种就是类似于直接将打包好的文件放在Tomcat下,然后进行调试,但是这样的方法的问题是我们没有办法进行直接的修改,因为Tomcat的文件时打包过的文件,是应该部署上去的,就算修改了,开发的文件也是不会被修改的。

  第二种解决方案是:在webpack中配置代理服务器。 即在config文件夹下配置:

    proxyTable: {
        '/api': {
          target: 'http://127.0.0.1:8090/',
          changeOrigin: true,
          pathRewrite: {
            '^/api': '/'
          }
        }
      },

  也就是说在node运行起来的时候,使用Tomcat服务器作为代理,这样就不存在跨域的问题了。

  需要注意的是,这里配置了api,所以在请求的时候也要添加api,如

axios({
    method: "get",
    url: "/api/bbg/shop/get_classify",

  而真实的接口又不存在api,所以我们要使用pathRewrite将api替换。 如下:

     pathRewrite: {
            '^/api': '/'
          }

  但是这样会出现这样的一个问题:就是我们在请求每一个端口的时候都需要添加一个api,这样是很麻烦的,如果使用axios就好说了,我们可以进行这样的配置:

axios.defaults.baseURL = '/api'

  这样,我们就可以直接使用原来的端口了。

  这种方法简直没有缺点,非常完美!  

  感谢王豪学长的提醒, 哈哈, 虽然你也看不到~

  有时可能Tomcat会突然慢,然后还报504的错误,不妨换一个端口。

 

 

posted @ 2017-05-21 15:00  Wayne-Zhu  阅读(792)  评论(0编辑  收藏  举报

一分耕耘,一分收获。