本地运行vue dist文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了本地运行vue dist文件相关的知识,希望对你有一定的参考价值。

参考技术A 当我们vue工作完成以后会打包一份dist文件给后台,之前本地肯定要测试一下,下面就是本人踩的一些坑,跟大家分享一下

a) 我们打包为dist以后第一个问题,我们打包为dist以后经常会遇见路径出错,也就是dom出现但是js与css不会出现,显示路径错误。

解决方法:打开脚手架的config文件中的index.js文件,查看build对象内的assetsPublicPath(发布路径)是否为"./"。默认的情况下是"/",但是"/"是绝对路径,而"./"是相对路径

绝对路径:就是你的主页上的文件或目录在硬盘上真正的路径,比如c:/apache/cgi-bin下的路径就是c:/apache/cgi-bin;

相对路径:顾名思义就是相对于当前文件的路径

b)路径没有问题了。文件可以引入进来了,那么怎么本地运行呢,因为dist文件是要有服务启动的,一本情况下后台会启动服务,但是总不能每一次都让后台打包吧

解决方法:

  1.这是dev内设置服务代理,

proxyTable:

      '/api':   //代理地址

        target: 'http://39.104.50.205',  //需要代理的地址

        changeOrigin: true,  //是否跨域

        secure: false,  // 如果是https接口,需要配置这个参数

        pathRewrite:

            '^/api': '/api'  //本身的接口地址没有 '/api' 这种通用前缀,所以要rewrite,如果本身有则去掉

        ,

      ,

    ,

2.配置开发环境与生产环境

在config/dev.env.js和prod.env.js里也就是开发/生产环境下分别配置一下请求的地址API_HOST

module.exports = merge(prodEnv,

  NODE_ENV: '"development"', // 开发环境

  API_HOST: '"/api/"'

)

module.exports =

  NODE_ENV: '"production"', // 生产环境

  API_HOST: '"http://xxx.com/"'



3.调用

created()

    console.log(process.env.NODE_ENV, '环境')

    let urlHost = process.env.API_HOST // 会自动判断当前是开发还是生产环境,然后自动匹配API_HOST

     axios.get(urlHost + 'DemoApi/oftenGoods.php')

    .then((res) =>

        console.log(res, '代理之后')

    )



好了,就这么多配置本地运行dist文件的方法大家git到了吗

vue 打包部署服务路径接口报错已解决

vue 写好代码后台,在本地正常运行。  打包到 服务器上,服务器访问报服务器路径错误

打包上传服务过程省略

原理:在本地有vue的运行环境node,运行起来就可以作为一个前端服务器使用。  但是打报后,就成为静态前端文件, 文件需要放到一台服务器上才可以运行访问。因为在vue中用到了代理,所以我们服务器选择也要适合代理的服务器nginx

vue 配置代码

 

我们将打包后的代码dist放到nginx html 目录下,启动nginx 

访问报错接口路径未找到:404

 

 原因服务器地址接口中并没有api,  vue中api只是代理标识作用。所以nginx 要设置同样的api代理访问对应的服务器

    server {
        listen       80;
        server_name  localhost;


    location /api{
            rewrite  ^/api/(.*)$ /$1 break;
            proxy_pass   http://localhost:801;           #所有/api开头的请求都会转发到这个地址,这是我本地后端代码地址,服务器端口是82
            index index.html;
        }

     }

重启服务器:nginx -s reload

访问项目 成功!

关键解析!!!

nginx 关键字配置  rewrite :  语法

rewrite : <regex> <replacement> [flag];
regex:代表正则表达式 用来匹配 请求路径
replacement: 替代,将该内容代替 regex(将正则匹配的内容替换成replacement);$1 替代第一个参数位置
flag: 标记 break #本条规则匹配完成即终止

rewrite ^/api/(.*)$ /$1 break;
根据以上: 将 ^/api/(.*)$ 替换成 $1 , $1 正好对应的是(.*) 等于 ^/api/(.*)$ -> (.*)
所以: http://41.111.149.11/api/blade-auth/captcha  ->  http://41.111.149.11/blade-auth/captcha
结果: http://41.111.149.11/blade-auth/captcha  

 

以上是关于本地运行vue dist文件的主要内容,如果未能解决你的问题,请参考以下文章

vue 搭建一个本地服务器运行打包后dist文件

运行vue打包的dist文件

运行vue打包的dist文件

如何在 Angular 6+ 的本地机器上运行 Dist 文件夹?

@vue/cli build dist/ 文件夹在托管为子目录时不呈现

如何在不第二次运行 npm run build 的情况下更新 Vue js 的 dist 文件夹