vue打包之部署在非根路径下的三两事

首先,感叹一下,2019年已经过去一半,想想自己做了些什么,好像也没做什么。

今天试着配一个nginx,以前的nginx都是指向的/根路径,今天的nginx指向的非/根路径,遇到许多问题的,总结总结。

老规矩,先来点示例代码:

nginx:

server {
        listen       80;
        server_name domain.com;
        location /path {
            alias "/your-project-file";
            index index.html;
            try_files $uri $uri/ /path/index.html;
        }
}

location /path :表示项目访问地址为http://domain.com/path
alias /your-project-file :指向你的项目打包后放在服务器的位置

try_files /path/index.html :这里为router官方文档推荐的写法,需要把/path加上

然后就是vue代码,这里用到的是vue-cli3x的代码,上关键的:

首先是vue.config.js下的publicPath: process.env.NODE_ENV === 'production' ? '/path': '/',为什么需要这样配?具体参见cli文档

然后是路由需要配置base: process.env.NODE_ENV === 'production' ? '/path': '/',这个也需要看router文档

通过这两个地方的配置,访问http://domain.com/path就可以访问到你打包后的项目了,但是!!!!

项目中的图片我是放在public文件夹下的,打包后没有正确的将public文件夹给加上/path,导致所有图片都404,很烦

这时网上出现了两个声音,第一,将图片放到src文件夹里面的assets。我试过,没搞出来,放弃了。第二,在图片前加上publicPath,参见文档

是的,包括所有以静态资源方式引入到项目的框架/插件,都需要拼上<%= BASE_URL %>,处理完之后,再次打包,解决了。

啊,时间好快,文章好水...

原文地址:https://www.cnblogs.com/xuejiangjun/p/11157016.html