【问题标题】:Laravel mix vuejs router history modeLaravel 混合 vuejs 路由器历史模式
【发布时间】:2018-04-04 10:14:13
【问题描述】:

我在我的应用程序中使用 laravel mix 和 vuejs,一切正常。

现在我尝试将 VueRouter 更改为历史模式:

const router = new VueRouter({
    mode: 'history'
})

在 ngix 服务器上,我添加了 catch all 规则:

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

因此,在访问或刷新“/pages”或“/contact”等顶级网址时,它仍然有效。

唯一的问题是像/pages/1/foo/bar/boo 这样的子级网址。单击路由器链接仍然有效,但如果我尝试刷新 /pages/1 上的页面或尝试直接访问它(在浏览器中输入 /pages/1)它不起作用,因为浏览器尝试从 @ 访问资产987654327@ 而不是 /js/2.js

【问题讨论】:

  • 从你的 nginx 配置中的 /index.html 中删除 /
  • 这应该如何帮助(它没有,我试过了,只是为了确定)? ngix 按预期工作,只是客户端 url 错误

标签: vuejs2 laravel-mix


【解决方案1】:

好的,我刚刚发现 - 我必须在我的 webpack.mix.js 文件中将公共路径设置为绝对路径:

mix.webpackConfig({
    ...
    output: {
        ...
        publicPath: "/"
    }
});

【讨论】:

  • 它没有解决我的问题,仍在寻找 /pages/js/2.js 而不是 /js/2.js跨度>
  • 也许你可以发布你的 webpack.mix.js 和你的 routes.js
  • 我的主要问题是关于我的 vue 项目中的 imagesdocuments,使用历史模式,当我的 Url 像 [example.com/about] images are查看 [example.com/about/images/profil.jpg] 而不是 [example.com/images/profil.jpg]
  • 这是我的 webpack.mix.js let mix = require('laravel-mix'); mix.webpackConfig({ output: { publicPath: '/' } }); mix.js('resources/assets/js/app.js', 'public/js') .sass('resources/assets/sass/app.scss', 'public/css');
  • 嗯。也许mix.setPublicPath('public') 对你有帮助?
猜你喜欢
  • 2021-02-04
  • 2020-01-27
  • 1970-01-01
  • 2020-08-14
  • 2017-08-23
  • 2020-09-20
  • 2021-09-27
  • 2018-07-29
  • 2018-02-16
相关资源
最近更新 更多