首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue服务于所有资产的nginx回报指数,但仅适用于深度链接。

Vue服务于所有资产的nginx回报指数,但仅适用于深度链接。
EN

Stack Overflow用户
提问于 2019-09-09 10:07:32
回答 2查看 409关注 0票数 0

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

我在运行nginx的服务器上部署了一个vue (cli3) prod构建。

推荐的try_files $uri $uri/ /index.html工作,,但只有当我打开/

如果我从/转到/dashboard,那么一切都还能正常工作。

如果我随后刷新(并直接打开/dashboard ),则返回所有资产的index.html、js、css、所有内容(因此表示vendors.js和app.js的Uncaught SyntaxError: Unexpected token < )。

(vue-路由器设置为历史记录更多)

我能做些什么来解决这个问题?一定有什么不对劲..。我还需要改变什么吗?有什么消息吗?我很感谢你的帮助:)

编辑:

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

如果你需要我的信任的任何额外的信息,请随时询问!

EN

回答 2

Stack Overflow用户

发布于 2019-09-09 11:11:12

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

我把vue publicPath设置为

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

在更改为

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

很抱歉浪费了大家的时间,也许有一天有人会因为这个问题而感到头疼:)

票数 1
EN

Stack Overflow用户

发布于 2019-09-09 10:20:46

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

代码语言:javascript
复制
 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;

}  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57851862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档