<bdo id='lHumf'></bdo><ul id='lHumf'></ul>

  • <tfoot id='lHumf'></tfoot>

  • <i id='lHumf'><tr id='lHumf'><dt id='lHumf'><q id='lHumf'><span id='lHumf'><b id='lHumf'><form id='lHumf'><ins id='lHumf'></ins><ul id='lHumf'></ul><sub id='lHumf'></sub></form><legend id='lHumf'></legend><bdo id='lHumf'><pre id='lHumf'><center id='lHumf'></center></pre></bdo></b><th id='lHumf'></th></span></q></dt></tr></i><div id='lHumf'><tfoot id='lHumf'></tfoot><dl id='lHumf'><fieldset id='lHumf'></fieldset></dl></div>

        <legend id='lHumf'><style id='lHumf'><dir id='lHumf'><q id='lHumf'></q></dir></style></legend>
      1. <small id='lHumf'></small><noframes id='lHumf'>

        vue部署后静态文件加载404的解决

        时间:2023-12-13
      2. <i id='Kv75t'><tr id='Kv75t'><dt id='Kv75t'><q id='Kv75t'><span id='Kv75t'><b id='Kv75t'><form id='Kv75t'><ins id='Kv75t'></ins><ul id='Kv75t'></ul><sub id='Kv75t'></sub></form><legend id='Kv75t'></legend><bdo id='Kv75t'><pre id='Kv75t'><center id='Kv75t'></center></pre></bdo></b><th id='Kv75t'></th></span></q></dt></tr></i><div id='Kv75t'><tfoot id='Kv75t'></tfoot><dl id='Kv75t'><fieldset id='Kv75t'></fieldset></dl></div>

            <tbody id='Kv75t'></tbody>

        • <small id='Kv75t'></small><noframes id='Kv75t'>

                <bdo id='Kv75t'></bdo><ul id='Kv75t'></ul>

                <legend id='Kv75t'><style id='Kv75t'><dir id='Kv75t'><q id='Kv75t'></q></dir></style></legend>
                  <tfoot id='Kv75t'></tfoot>

                  针对 vue 应用部署后静态文件加载 404 的情况,以下是解决方法的完整攻略。

                  现象

                  应用部署后,访问应用的静态文件(如 CSS、JS、图片等)时会出现 404 错误。

                  原因

                  原因通常是因为静态资源文件的路径找不到或者没有正确引入。

                  解决方案

                  解决该问题,可以采用以下两种方案:

                  方案一:history 模式

                  在 Vue Router 中,mode 可以设置为 history 模式来解决静态资源路径问题。在这种模式下,应用的地址会表现为正常的 URL 地址,比如 /about/contact 等。而不使用该模式则 URL 地址会像这样:/#/about/#!about

                  1. 配置 Vue Router

                  router/index.js 中添加如下代码:

                  import Vue from 'vue';
                  import Router from 'vue-router';
                  import HelloWorld from '@/components/HelloWorld.vue';
                  import About from '@/components/About.vue';
                  import Contact from '@/components/Contact.vue';
                  
                  Vue.use(Router);
                  
                  export default new Router({
                    mode: 'history',
                    routes: [
                      {
                        path: '/',
                        name: 'HelloWorld',
                        component: HelloWorld,
                      },
                      {
                        path: '/about',
                        name: 'About',
                        component: About,
                      },
                      {
                        path: '/contact',
                        name: 'Contact',
                        component: Contact,
                      },
                    ],
                  });
                  
                  1. 在服务器中配置

                  在服务器端需要配置一下,如果是 nginx 则需要在/nginx/conf/nginx.conf 中添加以下代码:

                  location / {
                      try_files $uri $uri/ /index.html;
                  }
                  

                  这里的 try_files 就是尝试访问指定的文件,如果找不到则直接返回 index.html 页面。这避免了 URL 访问时出现 404 错误的情况。

                  方案二:publicPath

                  在打包时,可以通过设置 publicPath 来解决静态文件路径的问题。该方法适用于那些不支持 history 模式的服务器或者是处理静态资源的CDN服务器。

                  在 vue.config.js 中添加以下代码:

                  module.exports = {
                    publicPath: process.env.NODE_ENV === 'production'
                      ? '/my-app/'
                      : '/',
                  };
                  

                  这里的 publicPath 就是指定资源文件的基础路径,如上面的 /my-app/ 就是一个网站或者 CDN 路径的基础路径,这个路径就是所有文件路径的前缀。

                  以上就是 vue 部署后静态文件加载 404 错误的两种解决方案。

                  示例说明

                  示例一

                  该示例是基于 publicPath 方案的,有以下的目录结构:

                  my-app/
                    node_modules/
                    src/
                      assets/
                        logo.png
                    public/
                      index.html
                      favicon.ico
                  

                  在 vue.config.js 中添加以下代码:

                  module.exports = {
                    publicPath: process.env.NODE_ENV === 'production'
                      ? '/my-app/'
                      : '/',
                  };
                  

                  在 index.html 中的 img 标签里设置相对路径:

                  <img src="./assets/logo.png" alt="logo">
                  

                  这里的 publicPath 为开发环境下的根路径 /,而在生产环境下的 publicPath/my-app/,这样就能够正常的加载到静态资源文件了。

                  示例二

                  该示例是基于 history 模式的,基本 publicPath 的解决方案一样,只是在路由模式上有所不同。

                  路由添加方式:

                  const router = new VueRouter({
                    mode: 'history',
                    routes: [
                      {
                        path: '/',
                        component: Home,
                      },
                      {
                        path: '/about',
                        component: About,
                      },
                    ],
                  });
                  

                  服务器配置(nginx):

                  location / {
                    try_files $uri $uri/ /index.html;
                  }
                  

                  以上是两个示例分别使用不同的方案解决 vue 部署后静态文件加载 404 的问题。

                  上一篇:使用CSS Transitions实现圆形悬停效果的示例代码 下一篇:浅谈vue项目如何打包扔向服务器

                  相关文章

                • <tfoot id='UJmwI'></tfoot>

                  • <bdo id='UJmwI'></bdo><ul id='UJmwI'></ul>

                  <legend id='UJmwI'><style id='UJmwI'><dir id='UJmwI'><q id='UJmwI'></q></dir></style></legend>
                    <i id='UJmwI'><tr id='UJmwI'><dt id='UJmwI'><q id='UJmwI'><span id='UJmwI'><b id='UJmwI'><form id='UJmwI'><ins id='UJmwI'></ins><ul id='UJmwI'></ul><sub id='UJmwI'></sub></form><legend id='UJmwI'></legend><bdo id='UJmwI'><pre id='UJmwI'><center id='UJmwI'></center></pre></bdo></b><th id='UJmwI'></th></span></q></dt></tr></i><div id='UJmwI'><tfoot id='UJmwI'></tfoot><dl id='UJmwI'><fieldset id='UJmwI'></fieldset></dl></div>
                  1. <small id='UJmwI'></small><noframes id='UJmwI'>