Vue 服务于 nginx 返回所有资产的索引,但仅限于深度链接



我知道类似的问题已经被问了一千次,但似乎没有一个完全适合我的问题。

我有一个Vue(CLI3(产品构建部署到运行nginx的服务器上。

推荐的try_files $uri $uri/ /index.html有效,前提是我打开/

如果我从/导航到/仪表板,一切仍然有效。

如果我然后刷新(并直接打开/dashboard(,则为所有资产、JS、CSS 和所有内容返回 index.html(因此对供应商.js和 app.js 表示Uncaught SyntaxError: Unexpected token <(

(vue-router 设置为历史记录 更多(

我能做些什么来解决这个问题? 一定是出了什么问题...我必须更改其他内容吗?Vue 方面有什么吗?我将不胜感激任何帮助:)

编辑:

我尝试将/$uri /$uri/添加到nginx配置中,以强制从/加载资产,但这也不起作用:/

如果您需要有关我的配置的任何其他信息,请随时询问!

(令人惊讶的简单(解决方案是:

我把我的 vue 公共路径设置为

publicPath: ('./'),(这意味着:资产是相对解析的,所以在/dashboard 上,它会寻找/dashboard/app.js,这显然是愚蠢的(

更改为后

publicPath: ('/'),,它按预期工作。

很抱歉浪费大家的时间,也许有一天有人会因为这个答案而省去一点头痛:)

你已经直接使用应用程序路径运行 Vue Js 应用程序,例如根/var/www/path/of/Vuejs;我建议你使用 Pm2 start 或 npm serve 运行 Vue Js 应用程序,并使用应用程序端口的 Nginx 反向代理。就像你的 VueJs 应用程序正在运行 8080 一样。下面是供参考的 Nginx 重定向代码。

server {
listen 80;
listen [::]:80;
server_name xyz.com;
location / {
proxy_pass http://0.0.0.0:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}  }

最新更新